无法加载文件或程序集 Microsoft.CodeAnalysis

Posted

技术标签:

【中文标题】无法加载文件或程序集 Microsoft.CodeAnalysis【英文标题】:Could not load file or assembly Microsoft.CodeAnalysis 【发布时间】:2016-06-17 22:12:07 【问题描述】:

我有一个我正在尝试托管的 web 项目,但是当服务器尝试编译它时,我收到以下错误:

未处理的异常:System.IO.FileLoadException:无法加载文件 或程序集 'Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (来自 HRESULT 的异常:0x80131040) ---> System.IO.FileLoadException: 无法加载文件或程序集 'Microsoft.CodeAnalysis, Version=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>

遗憾的是,我仍然遇到同样的错误。我做错了什么?

【问题讨论】:

可以在此处找到解决方案的类似问题:***.com/questions/40235284/… 在我的情况下,我的配置中指定了错误的 DLL 版本:&lt;system.codedom&gt;&lt;compilers&gt; 同样的问题,我安装了 2.0.1 版,并从包含 2.0.0 的不同项目中复制了 web.config 的一部分,将安装降级到 2.0.0,现在可以正常工作了,升级回 2.0 .1 检查一切正常后 这能回答你的问题吗? Could not load file or assembly 'Microsoft.CodeAnalysis, version= 1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependenc 【参考方案1】:

我今天在升级 Umbraco v7.13.0 时遇到了这个问题,只需更新以下软件包即可解决我的问题,这显然是 Umbraco upgrades 之类的常见问题。

Update-Package -Reinstall Microsoft.CodeAnalysis.CSharp

【讨论】:

【参考方案2】:

右键单击您的项目>>管理解决方案的 Nuget 包管理器>>点击更新>>更新您的“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”>>然后再次运行您的项目。

【讨论】:

【参考方案3】:

我解决了这个问题,但确保我的 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

【讨论】:

【参考方案4】:

如果上述选项均无效,请选择此答案。基本上,您正在将该 Microsoft.CodeAnalysis.dll 注册到 GAC

Could not load file or assembly 'Microsoft.CodeAnalysis, version= 1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependenc

【讨论】:

【参考方案5】:

其他可能的修复(至少对于 Visual Studio 2015):

获取最新的 Visual Studio 更新。

您可以前往Tools/Extensions and Updates/Updates查看更新

与此 Q/A 相同:Visual Studio 2015: Quick Actions no longer working, error: Could not load file or assembly Microsoft.CodeAnalysis

【讨论】:

【参考方案6】:

这是我自己想出来的。对于阅读本文的任何人,问题在于 Nuget 包 Microsoft.CodeDom.Providers.DotNetCompilerPlatform(也包含 CodeAnalysis 包)是错误的版本。我新建了一个webproject,马上更新了有问题的Nuget包,问题就解决了。

【讨论】:

或者,您可以在资源管理器中删除包文件夹,然后在 Visual Studio 中右键解决方案并单击“恢复 NuGet 包”。 如果你在我花了 3 个小时试图修复这个错误之前告诉我就好了。 :-) 谢谢你们 - 它为我节省了很多时间。 还可以考虑手动更新 Web.config 中的相关程序集版本:&lt;system.codedom&gt;&lt;compilers&gt;&lt;compiler ... type="...Version=..." ... /&gt;...。在我的情况下(VS 2015),在 nuget 更新 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 之后,这并没有自动更新。 太棒了!这拯救了我的一天!

以上是关于无法加载文件或程序集 Microsoft.CodeAnalysis的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一

寻找解决策略:无法加载文件或程序集[重复]