无法加载文件或程序集'Microsoft.CodeDom.Providers.DotNetCompilerPlatform

时间:2018-01-31 15:18:23

标签: asp.net visual-studio asp.net-mvc-5

此处的其他文章无法解决我的问题。运行ASP.NET MVC5 Web项目时会抛出以下错误。

任何人都知道我哪里出错了?

Could not load file or assembly 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)



=== Pre-bind state information ===
LOG: DisplayName = Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Teije/Documents/git/Project2.2/HaarlemFestival-Web/
 LOG: Initial PrivatePath =         C:\Users\Teije\Documents\git\Project2.2\HaarlemFestival-Web\bin
Calling assembly : (Unknown)
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Teije\Documents\git\Project2.2\HaarlemFestival-Web\web.config
LOG: Using host configuration file: C:\Users\Teije\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference:     Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Users/Teije/AppData/Local/Temp/Temporary ASP.NET Files/vs/b2d7334d/e3876cf7/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL.
LOG: Attempting download of new URL file:///C:/Users/Teije/AppData/Local/Temp/Temporary ASP.NET     Files/vs/b2d7334d/e3876cf7/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL.
LOG: Attempting download of new URL file:///C:/Users/Teije/Documents/git/Project2.2/HaarlemFestival-    Web/bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Build Number
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

6 个答案:

答案 0 :(得分:3)

此问题发生在您的Nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform中。 版本错误。 项目中的卸妆剂当前版本,然后从Nuget包中再次安装。

答案 1 :(得分:3)

我们只是在其中一个测试环境中遇到了此错误。问题出在web.config文件中。本节中的设置引用了DotNetCompilerPlatform程序集,但是版本号错误。我们将web.config更新为正确的版本号,并修复了该错误。

<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>

答案 2 :(得分:0)

如果您的目标文件夹不是“ bin /”,也可能发生。默认情况下,Roslyn在“ bin”文件夹中查找“ roslyn”文件夹,因此,例如,如果要编译为“ bin / debug /”,则可能没有roslyn文件夹,因此找不到提供者。

您可以通过恢复为普通的“ bin /”目标,或确保将完整的roslyn文件夹复制到“ bin / debug /”文件夹中作为构建后事件来解决此问题。尽管发布会始终推送到正确的目标文件夹,而不管构建计算机的编译目标文件夹为何,这就是为什么在本地运行时发布会失败,但是在部署时可以运行的原因。

(有些人遇到相反的问题,它可以在本地运行,但是在部署到IIS时会失败,因为IIS在其GAC中没有CodeDom提供程序的副本,但这是完全不同的问题。)

答案 3 :(得分:0)

根据Jeff Woods的回复解决:

<PropertyGroup>
    <OutputPath>bin\</OutputPath>
  </PropertyGroup>

答案 4 :(得分:0)

只需在包管理器控制台中运行此命令:

<块引用>

更新包 Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

答案 5 :(得分:0)

如果

,您可能会收到此错误
  1. 您发布了与以前不同的应用程序版本(例如,不同的 GIT 分支)并且
  2. 您最近对不同的 .NET 或 C# 编译器版本进行了重大迁移。

如果是这种情况,则可以通过删除您要发布到的目标文件夹然后再次发布您的应用程序来解决问题。

为什么会发生这种情况的一个可能的解释可能在这个答案中:https://stackoverflow.com/a/57609105/2279059