無法使用 ASP.NET (MVC 4) Web API OData Prerelease 載入文件或程序集 Sys…
問題
安裝Microsoft ASP.NET Web API OData 包 5.0.0-rc1 prerelease 後,我最終遇到以下異常:
無法載入文件或程序集 ‘System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ 或其依賴項之一。找到的程序集的清單定義與程序集引用不匹配。(來自 HRESULT 的異常:0x80131040)
我的 MVC 4 項目是全新的,非常小,沒什麼特別的。我的目標是 .NET 框架 4.5
我需要這個nuget 包來使用 Delta 類實現 PATCH (當我使用包的 4.0.0.0 版本時,Delta 類不起作用)。
我該如何解決?
我的 System.Web.Http 版本
在GAC我有System.Web.Http 的5.0.0.0版本
gacutil -l System.Web.Http 全域程序集記憶體包含以下程序集: System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
在Visual Studio中,當我瀏覽程序集時,System.Web.Http 的給定版本是4.0.0.0(為什麼?)
在我的項目中,對 System.Web.Http 的引用
- 版本為5.0.0.0
- 指向包的 \lib\net45\ 文件夾
- 有 CopyLocal=true
我嘗試過的事情
我試圖在 Web.config 中將重定向 v 4.0.0.0 綁定到 5.0.0.0
<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly>但它給了我另一個例外:
嘗試通過方法“System.Web.Http.GlobalConfiguration..cctor()”訪問欄位“System.Web.Http.GlobalConfiguration.CS$<>9__CachedAnonymousMethodDelegate2”失敗。
我猜核心 Web Api 引擎確實需要使用 v 4.0.0.0。
相關問題
程式碼分析錯誤 無法在 MVC4 Web API 中 載入文件或程序集 ‘System.Net.Http, Version=2.0.0.0 無法在 MVC4 Web API 中載入文件或程序集 ‘System.Net.Http, Version=2.0.0.0
Visual Studio 2013 有一個新功能可以解決這個問題。建構應用程序時,您應該會看到有關所引用程序集的不同版本的警告。點兩下警告以將程序集綁定重定向添加到 web.config。
有關詳細資訊,請參閱http://msdn.microsoft.com/en-us/library/2fc472t2.aspx 。
jeff.eynon 在下面指出,您需要檢查 web.config(如果使用 TFS 原始碼控制)才能讓 VS 自動編輯文件。謝謝你的提示!