Problem
How to create and publish NuGet package in .NET Core.
Solution
The first setup is to have a registry set up to host the packages, I’ll use nuget.org.
Register a free account at www.nuget.org. Go to “API Keys” section of your account.
![]()
Create a new key by giving it a name, scopes (permissions), and selecting packages (* means all).
![]()
You’ll see a new key added. Copy the key by clicking on the “Copy” link and paste it somewhere safe.
![]()
Now that you have a registry and key to upload your packages, let’s create and publish a package. I am using here a simple .NET Core class library I wrote to work with CSV files, the source code can be found on GitHub. You can, of course, use any of your projects.
Open a Command Prompt in your project directory.
![]()
Run dotnet pack command to create a NuGet package (by default this will also build the project).
- dotnet pack -o publish -c Release --version-suffix alpha
Options used are,
- -o is the path where package is created
- -c specifies build configuration
- --version-suffix specifies that this is a pre-release. You can omit this for your final release
![]()
You’ll have the NuGet package created in the publish folder
![]()
Run dotnet nuget push command to upload NuGet package to nuget.org.
- dotnet nuget push Fiver.Lib.Csv.1.0.0-alpha.nupkg -s https:
Options used are,
- -s specifies the URL to the server where you’re uploading the package
- -k specifies the API key that identifies you on the server.
![]()
Browse to your NuGet website and you’ll find your package,
![]()
You could also specify other properties in .csproj that adds metadata to your NuGet package, e.g.,
- <PropertyGroup>
- <Authors>Tahir Naushad</Authors>
- <Title>CSV Reader/Writer Library</Title>
- <Description>This is a library that makes reading and writing CSV files easy</Description>
- <VersionPrefix>1.0.1</VersionPrefix>
- <VersionSuffix>beta</VersionSuffix>
- </PropertyGroup>
Run dotnet pack command again and open the package in NuGet Package Explorer to view the properites.
![]()
For more information on various properties you could set, please see details here.