这里的其他文章无法解决我的问题。当我运行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.
8条答案
按热度按时间yptwkmov1#
我们刚刚在其中一个测试环境中遇到此错误。问题出在web.config文件中。该节具有引用DotNetCompilerPlatform程序集的设置,但版本号错误。我们将web.config更新为正确的版本号,它修复了此错误。
flvtvl502#
此问题来自您的Nuget软件包
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
。这是错误的版本。您可以删除当前版本,然后从Nuget重新安装。
bfnvny8b3#
只需在软件包管理器控制台中运行以下命令:
更新程序包
ha5z0ras4#
如果您的目标文件夹不是“bin/",也会发生这种情况。Roslyn默认情况下会在“bin”文件夹中查找“roslyn”文件夹,因此,例如,如果您正在编译到“bin/debug/",可能那里没有roslyn文件夹,因此它找不到提供程序。
您可以通过还原为普通的“bin/”目标来修复此问题,或者确保将完整的roslyn文件夹作为生成后事件复制到“bin/debug/”文件夹。由于发布总是推送到正确的目标文件夹,而不管编译目标文件夹在您的生成计算机上,这就是为什么当您在本地运行时它会失败,但如果您部署它,它会工作。
(Some人们遇到了相反的问题,它在本地工作,但在部署到IIS时失败,因为IIS在其GAC中没有CodeDom提供程序的副本,但这是一个完全不同的问题。)
htrmnn0y5#
如果出现以下情况,则可能会出现此错误
1.您发布了与以前不同的应用程序版本(例如,不同的GIT分支),并且
1.您最近进行了一次重要的迁移,迁移到了不同的.NET或C#编译器版本。
如果是这种情况,则可以通过删除要发布到的目标文件夹,然后重新发布应用程序来解决问题。
一个可能的解释为什么会发生这种情况可能是在这个答案:https://stackoverflow.com/a/57609105/2279059
lbsnaicq6#
在Visual Studio 2022中,更新微软的.CodeDom.提供程序.DotNetCompilerPlatform是我的解决方案。
谢谢
我的Web.config看起来像之前的“更新包微软.CodeDom.Providers.DotNetCompilerPlatform”为:
更新后;
wecizke37#
根据Jeff Woods的回复,决议如下:
dy2hfwbg8#
1.工具--〉NuGet软件包管理器--〉已安装
1.搜索为Microsoft.CodeDom.Providers.DotNetCompilerPlatform
查看右侧,如果有任何版本不同,请更新