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

yes*_*man 34 c# visual-studio

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

未处理的异常: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>
Run Code Online (Sandbox Code Playgroud)

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

yes*_*man 40

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

  • 或者,您可以删除资源管理器中的packages文件夹,然后在Visual Studio中右键单击"Restore NuGet Packages". (10认同)
  • 还要考虑在Web.config中手动更新相关的程序集版本:`<system.codedom> <compilers> <compiler ... type ="... Version = ..."... /> ...`.在我的案例(VS 2015)中,在"Microsoft.CodeDom.Providers.DotNetCompilerPlatform"的nuget更新后,这并没有自动更新. (4认同)

归档时间:

查看次数:

41440 次

最近记录:

6 年,7 月 前