Deployment of .NET apps to single-board computers is identical to that of any other platform. Your app can run as self-contained or framework-dependent deployment modes. There are advantages to each strategy. For more information, see .NET application publishing overview.
Deploying a framework-dependent app
To deploy your app as a framework-dependent app, complete the following steps:
This installs the latest version. If you need a specific version, replace the --channel STS parameter with --version <VERSION>, where <VERSION> is the specific build version.
To simplify path resolution, add a DOTNET_ROOT environment variable and add the .dotnet directory to $PATH with the following commands:
Verify the .NET installation with the following command:
dotnet --version
Verify the displayed version matches the version you installed.
Publish the app on the development computer as follows, depending on development environment.
If using Visual Studio, deploy the app to a local folder. Before publishing, select Edit in the publish profile summary and select the Settings tab. Ensure that Deployment mode is set to Framework-dependent and Target runtime is set to Portable.
If using the .NET CLI, use the dotnet publish command. No additional arguments are required.
Using an SFTP client like scp, copy the files from the publish location on the development computer to a new folder on the SBC.
For example, to use the scp command to copy files from the development computer to your SBC, open a command prompt and execute the following:
The -r option instructs scp to copy files recursively.
/publish-location/ is the folder you published to in the previous step.
pi@raspberypi is the user and host names in the format <username>@<hostname>.
/home/pi/deployment-location/ is the new folder on the SBC.
Tip
Recent versions of Windows have OpenSSH, which includes scp, pre-installed.
From a Bash prompt on the Raspberry Pi (local or SSH), run the app. To do this, set the deployment folder as the current directory and execute the following command (where HelloWorld.dll is the entry point of the app):
dotnet HelloWorld.dll
Deploying a self-contained app
To deploy your app as a self-contained app, complete the following steps:
Publish the app on the development computer as follows, depending on development environment.
If using Visual Studio, deploy the app to a local folder. Before publishing, select Edit in the publish profile summary and select the Settings tab. Ensure that Deployment mode is set to Self-contained and Target runtime is set to linux-arm64.
If using the .NET CLI, use the dotnet publish command with the --runtime linux-arm64 and --self-contained arguments:
The -r option instructs scp to copy files recursively.
/publish-location/ is the folder you published to in the previous step.
pi@raspberypi is the user and host names in the format <username>@<hostname>.
/home/pi/deployment-location/ is the new folder on the SBC.
Tip
Recent versions of Windows have OpenSSH, which includes scp, pre-installed.
From a Bash prompt on the device (local or SSH), run the app. To do this, set the current directory to the deployment location and complete the following steps:
Give the executable execute permission (where HelloWorld is the executable file name).
chmod +x HelloWorld
Run the executable.
./HelloWorld
Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.
.NET feedback
.NET is an open source project. Select a link to provide feedback:
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.