有時可能因為專案是使用較舊版本的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就發生錯誤。
雖然可以使用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。
點選後會在下方看到Package Manager Console視窗。
有沒有覺得PM>這些字很眼熟?
就是NuGet官網中Package網頁裡很顯眼的黑框中的開頭文字,沒錯那些指令就是要下在這個視窗中。
而NHibernate.Logging使用NHibernate 3.1.0.4000是1.1.0版本,所以以指今方式安裝NHibernate.Logging 1.1.0。
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檔案。