簡體   English   中英

無法加載文件或程序集 Microsoft.CodeAnalysis

[英]Could not load file or assembly Microsoft.CodeAnalysis

我有一個要托管的 web 項目,但是當服務器嘗試編譯它時,出現以下錯誤:

未處理的異常:System.IO.FileLoadException:無法加載文件或程序集“Microsoft.CodeAnalysis,版本=1.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依賴項之一。 定位的程序集的清單定義與程序集引用不匹配。 (來自 HRESULT 的異常:0x80131040)---> System.IO.FileLoadException:無法加載文件或程序集“Microsoft.CodeAnalysis,版本=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依賴項之一。 定位的程序集的清單定義與程序集引用不匹配。 (來自 HRESULT 的異常:0x80131040)
--- 內部異常堆棧跟蹤結束 --- 在 Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String[] args)

所以服務器的 CodeAnalysis 版本比我的項目舊。 所以讓我們嘗試綁定重定向!

<dependentAssembly>
    <assemblyIdentity name="Microsoft.CodeAnalysis" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-9.9.9.9" newVersion="1.0.0.0" />
</dependentAssembly>

可悲的是,我仍然遇到同樣的錯誤。 我究竟做錯了什么?

這是我自己想出來的。 對於閱讀本文的任何人來說,問題在於 Nuget 包Microsoft.CodeDom.Providers.DotNetCompilerPlatform (也包含 CodeAnalysis 包)是錯誤的版本。 我新建了一個webproject,馬上更新了有問題的Nuget包,問題解決了。

我解決了這個問題,但確保我的 web.config 中程序集的版本號是正確的。

編輯:

我也遇到了這個問題,有些人可能想知道 Web.Config 怎么會變得不正確。 在我的情況下,我使用 Web.Config 轉換,因此 Web.Config 文件被覆蓋: 在此處輸入圖片說明

將 Web.Configs 編譯器(在 Web.Template.Config 中)中的版本號更改為與 NuGet 版本匹配的數字確實可以解決問題:

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0

其他可能的修復(至少對於 Visual Studio 2015):

獲取最新的 Visual Studio 更新。

您可以通過轉到Tools/Extensions and Updates/Updates來檢查Tools/Extensions and Updates/Updates

與此問答相同: Visual Studio 2015:快速操作不再有效,錯誤:無法加載文件或程序集 Microsoft.CodeAnalysis

我今天在進行 Umbraco v7.13.0 升級時遇到了這個問題,只需更新以下軟件包即可解決我的問題,這顯然是Umbraco upgrades 之類的常見問題。

Update-Package -Reinstall Microsoft.CodeAnalysis.CSharp

如果上述選項均無效,請選擇此答案。 基本上,您正在將該Microsoft.CodeAnalysis.dll注冊到 GAC

無法加載文件或程序集“Microsoft.CodeAnalysis,版本= 1.3.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依賴項之一

右鍵單擊您的項目 >> 管理解決方案的 Nuget 包管理器 >> 點擊更新 >> 更新您的“Microsoft.CodeDom.Providers.DotNetCompilerPlatform” >> 然后再次運行您的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM