NuGet Package To Automatically Create Your NuGet Packages
I've also created
a NuGet package called "Create New NuGet Package From Project After Each Build"
that you can include in your Visual Studio project that will call the New-NuGetPackage.ps1 script from your project's Post-Build events to automatically create
a NuGet package every time your project builds. So just add that NuGet package to your project and instantly you will have a NuGet package (.nupkg) created for your project that is always up-to-date with your last successful build. The .nupkg file is placed
in the project's output directory (i.e. in the same directory as the project's .dll/.exe).
Depending on the size of your project and it's dependencies, the time this adds to your build should not be noticeable (only a second or two during my tests). Obviously the NuGet package does not automatically push the package to the gallery on every build
though, as that would be very wasteful and would require more time each build. Fortunately you can just run the script manually to push the package to the gallery (see below).
Add The NuGet Package To Your Visual Studio Project
To add the "Create New NuGet Package From Project After Each Build" package to your project:
1. From Solution Explorer in Visual Studio, right-click on your project's
node and choose Manage NuGet Packages...
2. In the NuGet Package Manager, select Online
from the menu on the left to search for packages online, and then in the search box on the top-right type in
"New NuGet Package"
(include the double quotes). When the "Create New NuGet Package From Project After Each Build" package appears, click its
3. That's it. You should now see a PostBuildScripts folder added to your project that contains the New-NuGetPackage.ps1 script, NuGet.exe, and a few other files.
The NuGet.exe is included so that you are not required to have NuGet.exe added to your PATH in order for the script to run. If you look in the project's properties you will also notice that a few lines were added to the Post-Build event section to call
the BuildNewPackage-RanAutomatically.ps1 script.
Now if you build your project the NuGet Package file should get created in your project's output directory.
Push Your Package To The NuGet Gallery
Since pushing your package to the NuGet Gallery is not automated, you still have to do that manually. Luckily you can simply use the New-NuGetPackage.ps1 script in the PostBuildScripts folder to pack and push the new NuGet Package to the Gallery:
1. Right-click on the New-NuGetPackage.ps1 file in Visual Studio and choose "Run with PowerShell".
Cannot resolve image macro, invalid image name or id.
2. It will then prompt you for the file to pack/push, so you can either:
- (recommended) navigate to the project's output directory and choose the .nupkg file, or
- navigate up one directory and choose the project file (e.g. the .csproj, .vbproj, or .fsproj file). This will rebuild the project and pack it again, overwriting the existing .nupkg file.
3. When it prompts you if you want to push your package to the NuGet Gallery, choose "Yes".
If you want to see output from the New-NuGetPackage.ps1 script and NuGet.exe, take a look at Visual Studio's Build Output window. This can be very helpful for identifying and troubleshooting any problems that you may have.