I've not found a really easy way to push updated packages to NuGet.org. You can of course follow Microsoft's own guidance. I feel like there's too much admin and manual steps in this approach.
I've used CI solutions like AppVeyor successfully, but I find AppVeyor kind of hard to setup. It has a maze settings -- I struggle with it. Although I've gotten it to work for some things, I've also found myself unable to get other projects working, and I couldn't figure out why. I've ended up doing it manually through NuGet.org's manual upload UI. I got tired of doing that, so I wanted to take a fresh look automating it in a console app. I'd like to be able to navigate to a package build directory and enter a command like this:
nugetpushThe program should find the packages in the current directory along with your API key and push your packages and symbols, if present.
- Install the tool package globally:
dotnet tool install --global NuGetPushTool
-
If you don't have one, create an API key at NuGet.org. Info about this is here.
-
Create a json file called
nugetpush.jsonin a directory above your .NET projects. For example, if your projects are in directories below%userprofile%\source\repos, then createnugetpush.jsonin that folder. At minimum your file should look like the example below. This file is based on this Options model. Put your API key in theApiKeyproperty.
Example
{
"ApiKey": "<your key>"
}
You should now be able to push packages from any directory on your machine that has NuGet packages. Navigate to the directory in a terminal window and type nugetpush.
By default, logs are saved in in local app data\NugetPush.
- Options defines available command line options
- Program.cs shows the high-level flow
- Program_methods.cs has the low-level implementation