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.
-
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. -
Make sure that library dependencies of the new package use the Arcade defined version of the library. The versions are defined in the
..\eng\Versions.propsfile. For instance, if the project has a dependence on Newtonsoft.Json you must add it as follows:<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />If there is no version specified for a required library feel free to add a new property defining it.
-
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 a version of .NET Framework we recommend you to use the Arcade defined version, which is stored in the $(NetFxTfm) property. For instance:
<TargetFrameworks>$(NetFxTfm);netcoreapp2.0</TargetFrameworks> -
There is no requirement to create a separate
.nuspecfile for the package. The package information will be automatically extracted from the.csprojfile.