升级到.net Core 3.1 Preview4后,使用代码分析器生成错误

我有一个Blazor Webassembly项目(托管),并且我刚刚尝试将其升级到.net core 3.1的发行版。为此,我已将VS 2019预览版升级到16.5预览版1.我已将项目中的所有软件包都升级到3.1.0-preview4.19579.2。我还将客户端和共享项目更新为.net standard 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 

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

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

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

其他可能相关的要点:

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

任何帮助都令人赞赏!

windls 回答:升级到.net Core 3.1 Preview4后,使用代码分析器生成错误

我在更新my project时遇到了同样的问题。

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

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

编辑:找到另一个solution。将此添加到项目文件中

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

combined_list = [e for et in [Enum1,Enum2] for e in et] netcore3.1netstandard2.1库似乎存在一个已知问题。对我来说,https://github.com/aspnet/AspNetCore/issues/17754#issuecomment-564431825中的解决方法有效:

解决方法是在主目录中编辑文件“ .nuget \ packages \ microsoft.aspnetcore.blazor.build \ 3.1.0-preview4.19579.2 \ targets \ Blazor.MonoRuntime.targets”并更改:

blazor-wasm-3.1

    <BlazorILLink
    ILLinkPath="$(MonoLinkerPath)"
    AssemblyPaths="@(_BlazorAssemblyToLink)"
    RootAssemblyNames="@(_BlazorLinkerRoot)"
    RootDescriptorFiles="@(BlazorLinkerDescriptor)"
    OutputDirectory="$(BlazorIntermediateLinkerOutputPath)"
    ExtraArgs="$(_BlazorLinkerAdditionalOptions)"
    ToolExe="$(_DotNetHostFileName)"
    ToolPath="$(_DotNetHostDirectory)" />

问题在于,如果用户名包含空格(如果您具有给定名字和姓氏的Windows帐户,则默认为->例如 Hans Meier ),链接器路径为配置不正确,引号丢失。

本文链接:https://www.f2er.com/2976446.html

大家都在问