A blog by Devendra Tewari
This post documents using the dotnet
command to create a class library solution from scratch. The solution builds a class library project, and a MS unit test project that tests the class library.
To create an empty solution called MySolution.sln
dotnet new sln [--force] -n MySolution
sln
is just one of several templates supported by the command. To see a list, try dotnet new -l
. Additional templates can be installed using dotnet new --install
e.g. AvaloniaUI.
To create a new class library project
dotnet new classlib [--force] -n MyLibrary
This creates a folder called MyLibrary
and a MyLibrary.csproj
file in it. Any C# files in the MyLibrary
folder will be compiled during build.
If MyLibrary
exists, use --force
to replace the exiting project file.
If your project has an AssemblyInfo.cs
that contains assembly attributes, you can edit project file to exclude autogeneration of assembly attributes
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.4.0" />
</ItemGroup>
</Project>
Otherwise, you’ll get errors such as
obj/Debug/netcoreapp2.0/MyLibrary.AssemblyInfo.cs(10,12): error CS0579: Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute ...
Also, note the use of Microsoft.CSharp
package in the project file. That is required to use C# language features such as dynamic. Without it, you’ll get an error such as
MyClass.cs(177,50): error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
To add package reference, head into the MyLibrary
project folder and run
dotnet add MyLibrary.csproj package Microsoft.CSharp
Then, run the following to restore package(s) from nuget
dotnet restore
Head over to the solution folder. To add the class library project to the solution, and build the solution
dotnet sln [MySolution.sln] add MyLibrary/MyLibrary.csproj
dotnet build
Specifying solution name is optional if you’ve got just one solution file in a folder.
To add a new MS unit test project
dotnet new mstest [--force] -n MyLibraryTest
Head into MyLibraryTest
and add a reference to MyLibrary
and package references
dotnet add MyLibraryTest.csproj reference ../MyLibrary/MyLibrary.csproj
dotnet add MyLibraryTest.csproj package Microsoft.CSharp
dotnet restore
Head over to the solution folder, build, and run unit tests
dotnet build
dotnet test MyLibraryTest
That wraps up the basic usage of dotnet
to create and maintain a simple .NET Core class library project.