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

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

未处理的exception:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.CodeAnalysis,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)—> System.IO.FileLoadException:无法加载文件或程序集’Microsoft.CodeAnalysis,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040)
—内部exception堆栈跟踪结束—在Microsoft.CodeAnalysis.CSharp.CommandLine.Program.Main(String [] args)

所以服务器有一个比我的项目更旧的CodeAnalysis版本。 所以让我们尝试绑定重定向!

    

可悲的是,我仍然得到同样的错误。 我究竟做错了什么?

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

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

获取最新的Visual Studio更新。

您可以转到Tools/Extensions and Updates/Updates来检查Tools/Extensions and Updates/Updates

与此Q / A相同: Visual Studio 2015:快速操作不再有效,错误:无法加载文件或程序集Microsoft.CodeAnalysis

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

编辑:

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

将Web.Configs编译器(在Web.Template.Config中)中的版本号更改为与NuGet版本匹配的数字确实解决了问题:

 
		      	

如果没有提到的选项,请转到这个答案。 基本上,您正在将Microsoft.CodeAnalysis.dll注册到GAC

无法加载文件或程序集’Microsoft.CodeAnalysis,version = 1.3.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35’或其中一个依赖项