How to Create an Arcade Package
May 19, 2026 ยท View on GitHub
One of the goals of Arcade is to be a vehicle to provide code sharing. One of the ways to accomplish this is to pack each tool into its own NuGet package. This document assumes that you are adding a package called ProjectOne to Arcade and provides a list of things you should check while doing that.
Things to Check
-
Package sources must go into the
src\folder on the root of the repository. -
Inside the
src\folder create a folder representing the project namespace:src\Microsoft.DotNet.ProjectOne. -
The main sources for the package must go into
src\folder. That is:src\Microsoft.DotNet.ProjectOne\src -
The sources for unit tests should go side-by-side with the main sources.
src\Microsoft.DotNet.ProjectOne\tests -
You should include a
README.mdfile on the root of the package. -
Make sure the namespace prefix of the package follows the name of the project. For instance:
namespace Microsoft.DotNet.ProjectOne.Model -
Include the package on the
Arcade.slnxfile. This way it will be compiled automatically when the solution is built. -
If your package produces binaries that need to be signed, make sure to mark it as
true or check the SignTool documentation to see how to sign specific files. -
If the package needs to target .NET, use the
$(NetMinimum)or$(NetCurrent)properties. For instance:<TargetFrameworks>$(NetMinimum)</TargetFrameworks> -
If the package needs to target .NET Framework, use the
$(NetFrameworkMinimum)property. For instance:<TargetFrameworks>$(NetFrameworkMinimum)</TargetFrameworks>