2012年10月21日 星期日

NuGet編譯後自動發佈套件

每次發佈套件,都要打一連串的命令太累了,比較簡單的方式是在專案中加上一個組態
在這個組態的建置後事件輸入命令就行了

首先,先打開專案的組態管理員

新增一個組態

名稱輸入NuGetPack

再來在專案上按右鍵,選擇卸載專案
再選擇編輯專案檔
在檔案的最下面,輸入建置後事件
之後要發佈的時後,選擇這個組態後編譯就行了
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'NuGetPack|AnyCPU'">
    <PostBuildEvent>
  CD $(ProjectDir)
  nuget pack -sym -prop configuration=release -build
  nuget push *.symbols.nupkg 123 -Source http://localhost:2335/NuGet
  del *.symbols.nupkg
  nuget push *.nupkg 123456 -s http://localhost:1968
  del *.nupkg
 </PostBuildEvent>
  </PropertyGroup>
</Project>
參考資料:


建立NuGet套件

首先下載NuGet命令列工具,請按此下載
為了方便起見,把這個檔案丟到系統資料夾中,例如%WinDir%或System32 

接下來建立一個測試用的dll專案

為了方便起見,請先安裝PowerCommands擴充元件

在專案上按右鍵,就會出現Open Command Prompt這個功能,按下後會打開一個cmd視窗,並把路徑切換到專案下面

輸入nuget spec,就會產生一個副檔名nuspec的檔案
P.S. 如果該目錄下不只一個專案檔(csproj),請明確指定你要產生的專案檔是那一個
ex. nuget spec xxx.csproj

在專案總管上面按下顯示所有檔案,就可以看到這個檔案

產生的nuspec檔案的內容如下

<package>
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseurl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseurl>
    <projecturl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projecturl>
    <iconurl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconurl>
    <requirelicenseacceptance>false</requirelicenseacceptance>
    <description>$description$</description>
    <releasenotes>Summary of changes made in this release of the package.</releasenotes>
    <copyright>Copyright 2012</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
</package>

$id對應的是這個套件的名稱
$version$對應的是AssemblyInfo.cs中的AssemblyVersionAttribute
$author$對應的是AssemblyInfo.cs中的AssemblyCompanyAttribute
$description$對應的是AssemblyInfo.cs中的AssemblyDescriptionAttribute
當然也可以手動輸入,下次再來更詳細地說明這個檔案的格式

接下來打包這個dll成一個套件,命令是nuget pack,參數說明如下
-sym:會一起產生包含偵錯符號的套件
-prop:用來額外指定一些特性,例如configuration=relase是編譯release這個組態
-build:是在打包前先編譯專案,以取得最新編譯的檔案
更詳細的說明,可以用nuget pack /?取得Help

因為有下-sym這個參數,所以除了會把元件打包成{id}.{version}.nupkg這樣格式的檔案之外
還會產生一個{id}.{version}.symbols.nupkg的檔案

接下來把這兩個檔案發佈到之前建立的nuget server和symbol server
發佈成功之後就可以使用NuGet來安裝這個套件了

發佈到nuget server
nuget push *.symbols.nupkg 123 -Source http://localhost:2335/NuGet

發佈到symbol server
nuget push *.nupkg 123456 -s http://localhost:1968

參考網址:

Creating and Publishing a Packag

上一篇:架設SymbolSource.Server
下一篇: NuGet編譯後自動發佈套件

架設SymbolSource.Server

首先要先安裝Debugging Tools for Windows
記住這個安裝路徑,等下會用到

選擇安裝Debugging Tool for Windows,一直按下一步就好了


接下來開始安裝SymbolSource.Server
先開一個MVC專案

選擇空白範本

用Nuget安裝SymbolSource.Server.Basic套件

打開web.config,找到SrcSrvPath,修改成剛安裝的路徑
    
<add key="SrcSrvPath" value="C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\srcsrv" />

按F5執行,就會看到如下的畫面
一個是Symbol的位置,一個是套件發佈用的位置

設定一下偵錯選項
1. 取消「啟用Just My Code的勾勾」
2. 勾選「啟用來源伺服器支援」
把套件和Symbol發佈之後就可以偵錯了

再新增一個Symbol位置,指向到伺服器路徑,之後發佈套件和Symbol就可以偵錯了

參考資料



2012年10月17日 星期三

架設Nuget.Server

首先建立一個空白的Web應用程式專案

再來使用Nuget安裝Nuget.Server這個套件

VS2012需檢查一下是否有兩個compilation區段

順便設定一下apiKey,這是之後用來上傳package的密碼

設定完後,按下F5應該會看到這樣的畫面
上面的網址是查詢Nuget套件資訊用的
下面的命令是之後用command line工具上傳套件的指令格式

工具->選項->套件管理員->套件來源
在這裡把剛的網址設定上去

使用Nuget的時後,就會發現多了一個來源

2012年10月12日 星期五

使用NuGet安裝、移除、更新套件

NuGet主要的功能,是新增、移除、更新套件,接下來就介紹這幾個功能


GUI介面

可以很方便地新增和移除套件

在專案參考上面按右鍵

出現的GUI視窗,左邊可以選擇來源,中間選擇套件,右上角則是搜尋方塊
以JQuery為列,直接按安裝就好了

安裝成功

如果要解除安裝,選擇左邊的「已安裝的套件」,然後選擇解除安裝就好了

解除安裝成功


Console介面

功能比較完整,也可以使用Tab命令補全

選擇工具裡面的程式庫套件管理員,再選擇Package Manager Console

就會打開Console介面

還是以JQuery為例
Install-Package是安裝套件
Update-Package是更新套件
參數-Version可以指定版本,如不指定則會以最新版為主
Uninstall-Package是移除套件

搜尋套件的命令是Get-Package
參數ListAvailable可以列出可用套件
參數AllVersions用來列出該套件所有版本
參數Filter用來過慮條件

2012年10月11日 星期四

安裝NuGet套件管理工具

NuGet是.NET平台上面的套件管理工具,主要用來安裝、更新、移除套件,套件中可能包含要參考的元件、使用的資料夾或檔案、設定檔、元件相依性等等,可以幫助我們省下不少時間和繁雜的工作


http://nuget.codeplex.com
這裡有Source Code和其他的工具

http://docs.nuget.org/
這裡有相關的文件

先安裝Vistual Studio Extension,選擇工具裡面的擴充功能和更新 

選擇線上Visual Studio 組件庫,第一個就是NuGet Package Manager
點擊下載就可以了

下載後會先跳出授權條款,選擇要安裝擴充功能的產品後按安裝

安裝中...

安裝完成...

安裝完後需要重新啟動Vistual Studio,按下「立即重新啟動」就好了

重新啟動後,在工具中就會多了一個程式庫套件管理員

也可以在專案中的參考上按右鍵,選擇管理NuGet套件

選擇要安裝的套件,以JQuery為例

按下下載後就會開始安裝該套件相關的檔案

安裝後的樣子

下一篇:使用NuGet安裝、移除、更新套件