NuGet系列-安裝特定版本Package

有時可能因為專案是使用較舊版本的Assembly,使用NuGet GUI不能選版本只能下載最新版Package安裝,新版Package中的Assmebly可能與你的專案不相容,使你的專案無法執行,但又不想自己手動去下載Assembly,手動加入參考,那該怎麼辦呢?

雖然NuGet的GUI(寫文時是1.5版)還沒有提供,但是Command-Line指令卻有支援,遇到這種情況先將用Command-Line指令安裝nupkg吧。

有時可能因為專案是使用較舊版本的Assembly,使用NuGet GUI不能選版本只能下載最新版Package安裝,新版Package中的Assmebly可能與你的專案不相容,使你的專案無法執行,但又不想自己手動去下載Assembly,手動加入參考,那該怎麼辦呢?

雖然NuGet的GUI(寫文時是1.5版)還沒有提供,但是Command-Line指令卻有支援,遇到這種情況先將用Command-Line指令安裝nupkg吧。

 

最近在使用NHibernate,NHibernate有不少相關的Assembly,如Spring.Net整合的NHibernate.Spring、與Common.Logging整合的NHibernate.Logging,不巧的是NHibernate.Spring最新版限定只能使用NHibernate 3.1.0.4000,而NHibernate.Logging最新版是使用NHibernate 3.2.0.4000,而專案要用Spring.Net的關係是使用NHibernate 3.1.0.4000,所以使用到NHibernate.Logging就發生錯誤。

image

雖然可以使用Config設定讓所用的NHibernate使用最新的Assembly。


<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" />
            <bindingRedirect oldVersion="0.0.0.0-3.2.0.4000" newVersion="3.2.0.4000" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

但是因為專案是使用3.1.0.4000,非常驚人的Visual Studio會自動讓你改回來,所以沒多久專案又因Assembly的錯誤無法執行,但是因為NHibernate.Spring的版本限制,又無法使用NuGet讓專案NHibernate升級(龜毛不想自己換Assembly),所以我選擇讓NHibernate.Logging降級。

使用NuGet Comman-Line安裝Package

開啟NuGet Comman-Line(名稱叫Package Manager Console),在工具列>Tools>Library Package>Package Manager Console。

image

 

點選後會在下方看到Package Manager Console視窗。

image

 

有沒有覺得PM>這些字很眼熟?

 

就是NuGet官網中Package網頁裡很顯眼的黑框中的開頭文字,沒錯那些指令就是要下在這個視窗中。

image

 

而NHibernate.Logging使用NHibernate 3.1.0.4000是1.1.0版本,所以以指今方式安裝NHibernate.Logging 1.1.0。

image

 

Install-Package相關指令

Install-Package Id [-IgnoreDependencies] [-Project]  [-Version] [-Source ]

  • -IgnoreDependencies 
                    是否忽略Package的相依性,也就是不會安裝其他Package。
  • -Project
                    指定安裝的專案,除了可以使用下來選單來決定安裝的專案也可以用這個選項指定。
  • -Source
                    指定Package來源的目錄路徑,如果你已經下載到本機,不想連線安裝可以使用這個選項。
  • -Version
                   指定安裝版本,預設使用最新版。

範例

Install-Package NHibernate.Logging –version 1.1.0 -project MvcApplicaion1 –source C:\packages

 

範例說明

在MvcApplicaion1專案中安裝NHibernate.Logging 1.1.0版,使用C:\packages下的NHibernate.Logging.1.1.0.nupkg檔案。

 

參考文件

Package Manager Console Powershell Reference