Who is this for?

This is an advanced topic for .NET developers who want to take advantage of the performance and cost benefits of Azure Cobalt processors.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Build and run a basic OrchardCore CMS application
  • Integrate a simple C shared library into a .NET application
  • Configure architecture-agnostic builds using AnyCPU
  • Evaluate the performance of different .NET versions

Prerequisites

Before starting, you will need the following:

  • A Microsoft Azure account with permissions to deploy virtual machines (VMs)
  • .NET SDK 8.0 or later
  • Basic knowledge of C and C#
  • GCC installed (Linux) or access to a cross-compiler
  • OrchardCore application created using the .NET CLI or Visual Studio

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll migrate a .NET OrchardCore CMS application to an Azure Cobalt 100 Arm-based VM. You’ll provision Ubuntu 24.04, build and run the application, add a native C component that C# calls through DllImport, and configure an architecture-agnostic AnyCPU build for Arm and x86. You’ll then review .NET version choices and confirm the expected native output.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which network port should I open to reach the OrchardCore app on the VM?
Open port 8080 to the internet as part of the VM setup. After starting the app, connect to the VM’s public IP on port 8080.
What artifact should I get when I compile the C code into a shared library?
The gcc command produces a shared object named libmylib.so. This is the library the C# code will load.
How do I verify the C library call worked from C#?
Call the function via DllImport and check the application’s console output for Hello from the C library!. Seeing that line confirms that the native call executed.
Which build option should I use so the same build runs on both Arm and x86?
Use .NET’s AnyCPU configuration. It provides an architecture-agnostic managed build that runs on both architectures.
What .NET versions should I keep track of?
.NET 8 is the current Long-Term Support (LTS) version until Nov 2026, .NET 9 is the Short-Term Support (STS) version until Nov 2026, and .NET 10 is the next LTS in preview. .NET versions 3.1, 5, 6, and 7 have reached End-of-Life (EOL).
Next