升级到 .net core 3.1 preview4 后使用代码分析器构建错误

Lau*_*ohn 3 asp.net-core blazor-client-side

我有一个 Blazor webassembly 项目(托管),我刚刚尝试将其升级到 .net core 3.1 的发布版本。为此,我已将 VS 2019 预览版升级到 16.5 预览版 1。我已将项目中的所有包升级到 3.1.0-preview4.19579.2。我还将客户端和共享项目更新到 .net 标准 2.1 并安装了最新的模板(我认为)。

当我尝试构建我的解决方案时,我现在收到此错误,它似乎在某处显示重复的代码分析资源文件:

Severity    Code    Description Project File    Line    Suppression State
Error   MSB4018 The "ResolveBlazorRuntimeDependencies" task failed unexpectedly.
System.InvalidOperationException: Multiple assemblies found with the same assembly name 'Microsoft.CodeAnalysis.resources':
Microsoft.CodeAnalysis.resources
C:\Users\NickWhymark\.nuget\packages\microsoft.codeanalysis.common\3.3.1\lib\netstandard2.0\de\Microsoft.CodeAnalysis.resources.dll
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.<ResolveRuntimeDependenciesCore>g__CreateAssemblyLookup|17_1(IEnumerable`1 assemblyPaths)
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.ResolveRuntimeDependenciesCore(String entryPoint, IEnumerable`1 applicationDependencies, IEnumerable`1 monoBclAssemblies)
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() Test.Blazor.Client  C:\Users\myuser\.nuget\packages\microsoft.aspnetcore.blazor.build\3.1.0-preview4.19579.2\targets\Blazor.MonoRuntime.targets 252 
Run Code Online (Sandbox Code Playgroud)

该错误似乎出现在 Web 程序集(客户端)项目中。我看不到任何重复的分析器。但是在服务器项目中,我注意到 Microsoft.AspNetCore.Components.Analyzers.dll 的副本。一个来自 Program Files 中的 .Net Core 3.1 SDK 文件夹,另一个来自 .nuget/packages。注意我没有明确添加 nuget 一个,它只是“出现”了。

虽然奇怪,但我认为服务器项目中的重复分析器不一定是原因,因为我创建了一个新的 Blazor webassembly 项目,并且该项目也有重复但编译正确。

我尝试过清理/重建,重新启动 VS,删除 bin/obj 文件夹,但问题仍然存在。

其他可能相关的要点:

  • 我正在使用 Telerik Blazor 控件
  • 我已经安装了 VS2019 的发布版本以及预览版。我也升级到了 16.4。

非常感谢任何帮助!

SAR*_*ARI 5

我的项目更新遇到了同样的问题。

Severity    Code    Description Project File    Line    Suppression State
Error   MSB4018 The "ResolveBlazorRuntimeDependencies" task failed unexpectedly.
System.InvalidOperationException: Multiple assemblies found with the same assembly name 'Microsoft.CodeAnalysis.resources':
Microsoft.CodeAnalysis.resources
C:\Users\SARI\.nuget\packages\microsoft.codeanalysis.common\3.4.0\lib\netstandard2.0\de\Microsoft.CodeAnalysis.resources.dll
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.<ResolveRuntimeDependenciesCore>g__CreateAssemblyLookup|17_1(IEnumerable`1 assemblyPaths)
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.ResolveRuntimeDependenciesCore(String entryPoint, IEnumerable`1 applicationDependencies, IEnumerable`1 monoBclAssemblies)
   at Microsoft.AspNetCore.Blazor.Build.ResolveBlazorRuntimeDependencies.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() BlazorDemo  C:\Users\SARI\.nuget\packages\microsoft.aspnetcore.blazor.build\3.1.0-preview4.19579.2\targets\Blazor.MonoRuntime.targets   252
Run Code Online (Sandbox Code Playgroud)

<BlazorLinkOnBuild>false</BlazorLinkOnBuild>从项目文件 (.csproj) 中删除解决了该问题。

编辑:找到另一个解决方案。将此添加到项目文件中

<Target Name="_RemoveSatelliteAssemblies" BeforeTargets="_ResolveBlazorRuntimeDependencies">
  <ItemGroup>
    <_BlazorDependencyInput Remove="@(_BlazorDependencyInput->WithMetadataValue('AssetType', 'resources'))"  />
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)