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

时间:2016-03-04 08:48:09

标签: c# visual-studio

我有一个我试图托管的webproject,但是当服务器尝试编译它时,我收到以下错误:

  

未处理的异常:System.IO.FileLoadException:无法加载文件   或汇编' Microsoft.CodeAnalysis,Version = 1.1.0.0,Culture = neutral,   公钥= 31bf3856ad364e35'或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)   ---> System.IO.FileLoadException:无法加载文件或程序集' Microsoft.CodeAnalysis,Version = 1.0.0.0,Culture = neutral,   公钥= 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>
可悲的是,我仍然得到同样的错误。我做错了什么?

6 个答案:

答案 0 :(得分:34)

我自己想出来了。对于阅读此内容的任何人来说,问题是Nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform(也包含CodeAnalysis包)是错误的版本。我创建了一个新的webproject,立即更新了有问题的Nuget包,问题解决了。

答案 1 :(得分:4)

我解决了这个问题,但确保我的web.config中程序集的版本号是正确的。

修改

我也遇到了这个问题,有些人可能想知道Web.Config是如何变得不正确的。在我的情况下,我使用Web.Config Transforms,因此Web.Config文件被覆盖: enter image description here

将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

答案 2 :(得分:4)

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

获取最新的Visual Studio更新。

您可以转到Tools/Extensions and Updates/Updates

查看更新

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

答案 3 :(得分:1)

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

Update-Package -Reinstall Microsoft.CodeAnalysis.CSharp

答案 4 :(得分:0)

如果没有提到的选项,请转到这个答案。基本上,您将 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 :(得分:-1)

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