无法加载文件或程序集 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 版本:<system.codedom><compilers>
。
同样的问题,我安装了 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 中的相关程序集版本:<system.codedom><compilers><compiler ... type="...Version=..." ... />...
。在我的情况下(VS 2015),在 nuget 更新 Microsoft.CodeDom.Providers.DotNetCompilerPlatform
之后,这并没有自动更新。
太棒了!这拯救了我的一天!以上是关于无法加载文件或程序集 Microsoft.CodeAnalysis的主要内容,如果未能解决你的问题,请参考以下文章
无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0
无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配
无法加载文件或程序集'netstandard,版本 = 2.0.0.0