Windows Core IoT – DotNet Core on a Raspberry PI3

Before we can start creating a project using .NET Core for RPI3, we first need to explain what and why we use .NET CORE !

.NET Core supports three app models:

  • ASP.NET apps and services
  • Console apps
  • Universal Windows Platform (UWP) apps

First of all .Net CORE is a Cross-Platform Framework opposed to the regular .Net Framework.

Supporting the following platforms:

  • Windows
  • OS X
  • Linux

Read more about .Net Frameworks here

image

More info you can find here and here

 

Since RPI3 runs on an ARM architecture we can’t just use Standard .Net Assemblies to build projects…

You can now easily convert a platform-specific class library into a portable class library by publishing to another platform.

 

I will show you an example as we go along.

 

Getting Started

As being a scripter I hate to install all the overhead on my PC just to do simple things !

That’s why will only use the Command Line Interface (CLI) and NO Visual Studio Smile

 

Prerequisites :

We first have to install the .Net Core SDK on you desktop PC.

At the moment MS has arrived at .Net Core SDK version 2.1.103, Download here

 

image

This is all you need to do a quick start Smile

 

Once installed open the Command Prompt and let’s check the version installed.

Run command : dotnet /? to get all options.

 

To get the version info we run the command:

dotnet –version or even better is dotnet –info

image

.Net Core Extensions

In contrast to the .NET Framework, the .NET Core platform will be delivered as a set of NuGet packages.

These extension are needed to build your applications. We will come back to this later on showing the examples…

 

image

image

TIP :

You can download packages manually from the Nuget Site and open them using 7-zip.

And extract the libraries you need for your environment…

image

As mentioned before instead of using Visual Studio to start our for project.

image

We will just use the DotNet Core Command line Tools, to build the first Console App in .Net Core for RPI3.

.Net Core has the same Template Apps as you can get through Visual Studio, let’s see what is available.

Run command : dotnet new

image

Also RAZOR pages are possible as you can see Smile

 

.Net Core Console App

1. Console app Template :

image

Run command : dotnet new console

optional parameters are :

–n specifies the name of the project

-o specifies the output location, if omitted it will create the project in the %userprofile%  dir.

dotnet new console -n MyFirstCoreApp -o c:\coreiot

 

image

The Template app has generated this code

 

image

2. Run the console app.

cd c:\coreiot

Dotnet run

dotnet publish -r win8-arm

image

 

3. Publish to RPI3

In order to use it on RPI3 or Linux we need to add a few lines in the MyFirstCoreApp.csproj file

image

<RuntimeFrameworkVersion>2.0.6</RuntimeFrameworkVersion>
<RuntimeIdentifiers>win8-arm;ubuntu.14.04-arm;ubuntu.16.04-arm</RuntimeIdentifiers>

 

Remember the RuntimeFrameworkVersion you can find in the .Net Core Info see

See dotnet –Info

Next run the dotnet restore command

image

Next run the dotnet publish -r win8-arm command

image

or if you focus a Linux distribution you run the command

dotnet publish -r ubuntu.16.04-arm

 

4. Copy the app to the RPI3

image

C:\coreiot\bin\Debug\netcoreapp2.0\win8-arm\publish

 

5. Using PowerShell to run it

cd to your app folder

image

image

Runs as expected Smile

 

6. Change the code using an input parameter

 

image

 

Console.WriteLine(“\nWhat is your name? “);
var name = Console.ReadLine();
var date = DateTime.Now;
Console.WriteLine($”\nHello, {name}, on {date:d} at {date:t}!”);
Console.Write(“\nPress any key to exit…”);
Console.ReadKey(true);

 

Run command : dotnet run

image

 

Next run command : dotnet publish -r win8-arm

 

And copy it back to RPI3 and test it using PowerShell

 

Next see here for an SQLite Example on RPI3

Next see here for an ASP .Net Core Example on RPI3

 

PS :

Keep in mind that for Windows there is a nice Extension Library.

That gives you access to about 20.000 Windows API’s

Run this command to add it to your project

dotnet add package Microsoft.Windows.Compatibility –version 2.0.0

Enjoy !

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: