NuGet系列-編譯後自動發佈

目前建立nupkg檔的方式有二種,使用NuGet命令列工具或NuGet Package Explorer GUI工具,個人是覺得先用NuGet Package Explorer建立NuSpec,之後在用NuGet命令列與MSBuild編譯後自動上傳,會比較方便。

目前建立nupkg檔的方式有二種,使用NuGet命令列工具或NuGet Package Explorer GUI工具,個人是覺得先用NuGet Package Explorer建立nuspec,之後在用NuGet命令列與MSBuild編譯後自動上傳,會比較方便。

 

以下為個人的作法,不一定比較好用。

 

安裝NuGet命令列工具

http://nuget.codeplex.com/releases下載NuGet.exe,將檔案存放路徑加入環境變數Path中(我比較懶,直接丟到C:\Windows下)。

 

產生nuspec

我會用NuGet Package Explorer設定好nuspec,按工具的File > Save Metadata as,將檔案存到專案的NuGet資料夾下。

image

 

修改nuspec檔案,將路徑改成相對路徑,讓專案路徑變動或從版控簽出都可以使用nuspec產生nupkg。

image

 

建立bat檔

在專案下的NuGet資料夾下建立NuGetPush.bat 檔案,每次版本有變動時也要改NuGetPush.bat(想要自動找dll版本,但不好寫)。

NuGet SetApiKey 776BA4C5-9081-4F06-90A1-C61C0E06E664 -Source http://127.0.0.1
NuGet Pack Common.Logging.Elmah.nuspec -Version 1.0.0.1
NuGet Push Common.Logging.Elmah.1.0.0.1.nupkg -Source http://127.0.0.1
Exit 0

 

修改.csproj檔

在.csproj最下方處增加下列文字,讓MSBuild在Release Build後執行bat檔,或是建立新的Build Configuration ,不讓Release Build做太多事。

<PropertyGroup Condition=" '$(Configuration)' == 'Release(or NuGet)' ">
    <PostBuildEvent>
        CD $(ProjectDir)NuGet
        NuGetPush.bat
    </PostBuildEvent>
</PropertyGroup>

 

建立NuGet用的Build Configuration

在工具列的Build的下來選單可以看到預設會有Debug與Release二個Build Configuration,這二個的主要差異只有設定值不同(也可以打開專案屬性視窗,把二個設定值設成一樣),我們可以建立新的Build Configuration來因應不同的情況來改變設定,像常見控件項的專案會增加WPF、Silverlight二種Build Configuration,因為WPF與Silverlight只有少種差異,可以使用不同的Build Configuration來切換不同點,讓一個專案可以有多種產出(但Code中可能會增加#if #endif等編譯用的語法)。

 

image

 

開啟Configuration Manager後,在Action solution configuration的下拉選單上選擇<new>,建議是複制Release的設定。

image

 

可以使用Batch Build來做編譯,不同一直切換Build Configuration。

image

 

當使用Release(or NuGet) Build時可以從輸出視窗看到執行結果。

image