NugGet Package Handling with .bat File

A while ago I set up a private NuGet Server in our company because we wanted to escape the ‘Dll-Hell’.
After happily finished setting up the server (tutorial coming soon…) I wanted to publish our first private NuGet.

Unfortunately creating your own NuGet Package was getting more difficult than I thought.

You have to download the nuget.exe, deploy it in every project folder you wanna turn into a NuGet and run several bash commands to finally deploy your package.
This simple file is an all-in-one tool for handling all that stuff.

How to Use

Create Package

  • Create a .bat file and copy the code below
  • Deploy the file into your project folder
  • Change http://localhost:64591/nuget to the NuGet Feed you wanna push your package to
    • Additionaly add the api key to that command-line
  • Execute the script
    • nuget.exe getting downloaded and .nuspec File will be created
  • Edit and save your .nuspec file

Push Package

  • Drag and drop the .nuspec file onto the .bat file
  • The packagage will be deployed on the feed declared in the script

Code

@echo off
echo Proceed with checking nuget.exe and downloading if missing.

if not exist nuget.exe (
    echo Downloading nuget.exe...
    powershell -Command "Invoke-WebRequest https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe"
    echo Finished downloading
) else (
    echo nuget.exe located.
)

if exist nuget.exe (
    if exist "%~1" (
        echo Drag and drop recognized
        echo Pushing the package...

        rem edit your nuget server here
        nuget push %~1 -Source http://localhost:64591/nuget
        echo Finished pushing.
    ) else (
        if exist *.nuspec (
            rem get modified file from server
            nuget pack
            echo Finished.
        ) else (
            nuget spec
            echo Modify *.nuspec and start the .bat again to pack the NuGet.
        )
    )
) else (
    echo Error locating nuget.exe !
)

pause

ToDo

  • More comments
  • nuget.exe stored only in one place
  • Proper Syntax Highlight for code