Visual Studio 未能加载文件或程序集“

8dtrkrch  于 2022-12-14  发布在  其他
关注(0)|答案(8)|浏览(677)

这里的其他文章无法解决我的问题。当我运行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.
yptwkmov

yptwkmov1#

我们刚刚在其中一个测试环境中遇到此错误。问题出在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>
flvtvl50

flvtvl502#

此问题来自您的Nuget软件包Microsoft.CodeDom.Providers.DotNetCompilerPlatform
这是错误的版本。您可以删除当前版本,然后从Nuget重新安装。

bfnvny8b

bfnvny8b3#

只需在软件包管理器控制台中运行以下命令:
更新程序包

ha5z0ras

ha5z0ras4#

如果您的目标文件夹不是“bin/",也会发生这种情况。Roslyn默认情况下会在“bin”文件夹中查找“roslyn”文件夹,因此,例如,如果您正在编译到“bin/debug/",可能那里没有roslyn文件夹,因此它找不到提供程序。
您可以通过还原为普通的“bin/”目标来修复此问题,或者确保将完整的roslyn文件夹作为生成后事件复制到“bin/debug/”文件夹。由于发布总是推送到正确的目标文件夹,而不管编译目标文件夹在您的生成计算机上,这就是为什么当您在本地运行时它会失败,但如果您部署它,它会工作。
(Some人们遇到了相反的问题,它在本地工作,但在部署到IIS时失败,因为IIS在其GAC中没有CodeDom提供程序的副本,但这是一个完全不同的问题。)

htrmnn0y

htrmnn0y5#

如果出现以下情况,则可能会出现此错误
1.您发布了与以前不同的应用程序版本(例如,不同的GIT分支),并且
1.您最近进行了一次重要的迁移,迁移到了不同的.NET或C#编译器版本。
如果是这种情况,则可以通过删除要发布到的目标文件夹,然后重新发布应用程序来解决问题。
一个可能的解释为什么会发生这种情况可能是在这个答案:https://stackoverflow.com/a/57609105/2279059

lbsnaicq

lbsnaicq6#

在Visual Studio 2022中,更新微软的.CodeDom.提供程序.DotNetCompilerPlatform是我的解决方案。
谢谢
我的Web.config看起来像之前的“更新包微软.CodeDom.Providers.DotNetCompilerPlatform”为:

<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>

更新后;

<compilation debug="true" targetFramework="4.7.2" />
wecizke3

wecizke37#

根据Jeff Woods的回复,决议如下:

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

dy2hfwbg8#

1.工具--〉NuGet软件包管理器--〉已安装
1.搜索为Microsoft.CodeDom.Providers.DotNetCompilerPlatform
查看右侧,如果有任何版本不同,请更新

相关问题