當運行我的.NET項目中,我得到以下運行時錯誤:NuGet包GAC依賴
Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
從我個人理解,Microsoft.WindowsAzure.ServiceRuntime
是GAC依賴和不提供的NuGet。
我的.NET項目引用了Azure SDK 2.5中ServiceRuntime的2.5.0.0。異常的堆棧跟蹤顯示我們的一個自定義NuGet包引用了2.4.0.0。
當在NuGet包的依賴關係來看,它並不顯示ServiceRuntime,我以爲是因爲它是一個GAC引用(東西它的NuGet無法解析):
我發現,通過加入以下web.config
變化,現在它工作:
<dependentAssembly>
<assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.0.0" newVersion="2.5.0.0" />
</dependentAssembly>
我會認爲這只是工作,如果2.5.0.0與2.4.0.0規範向後兼容。
問題:如果它是不向後兼容
- 會發生什麼?
- 爲什麼不是
Microsoft.WindowsAzure.ServiceRuntime
的NuGet包?
Nuget絕對不只適用於第三方庫。微軟甚至在nuget上有自己的feed - https://www.nuget.org/profiles/microsoft - 目前包含超過1100個軟件包。 – 2014-12-22 10:32:15
MS不通過Nuget提供核心.Net庫,鏈接中提到的庫是用於附加功能的可選庫,在許多情況下,它們具有第三方競爭對手或者可以覆蓋,以修改當前的實現 – 2014-12-22 10:37:24
在我提到的鏈接,你會看到很多可以被認爲是核心的庫。 - 例如MVC,WebApi,OData,Razor,Owin和EntityFramework。但是你確定對於某些事情是正確的,我們不幸的是仍然需要安裝SDK的++ – 2014-12-23 12:58:23