使用 .NET-Standard 2.0 项目构建 ASP.NET-Core 3.1 会导致冲突的 Microsoft.AspNetCore.Mvc.Analyzers 程序集

Dan*_*iel 8 c# .net-core asp.net-core .net-standard-2.0 asp.net-core-3.1

我正在尝试构建一个ASP.NET-Core 3.1( netcoreapp3.1) 应用程序,该应用程序依赖于.NET-Standard 2.0使用 MSBuild SDK的 NuGet 库"Microsoft.NET.Sdk.Razor"

这在 Visual Studio (2019) 中构建并运行良好,但是当我运行时dotnet build出现以下错误:

Build FAILED.

CSC : error CS8034: Unable to load Analyzer assembly 
 C:\Users\daniel\.nuget\packages\microsoft.aspnetcore.mvc.analyzers\2.2.0\analyzers\dotnet\cs\Microsoft.AspNetCore.Mvc.Analyzers.dll
 : Assembly with same name is already loaded [D:\git\myapp\src\myapp.App\myapp.App.csproj]
    0 Warning(s)
    1 Error(s)
Run Code Online (Sandbox Code Playgroud)

我的猜测是我的.NET-Standard 2.0库正在Microsoft.CodeQuality.Analyzers通过Microsoft.NET.Sdk.RazorSDK拉入2.x ,这与ASP.NET-Core 3.1应用程序拉入的库相冲突。

问题:

  1. 有没有一种方法可以像 Visual Studio 一样通过命令行构建我的应用程序?

  2. #if NETCOREAPP3_1在我的库中使用多目标和块的正确解决方案是什么?

小智 3

Visual Studio 使用 MSBuild 来构建您的解决方案文件,因此您可以尝试MSBuild %yoursolutionfile%构建您的解决方案,另一方面,dotnet build通常会构建单个项目而不是解决方案。

要回答你的第二个问题,如果你确实发现你的依赖项是必需的,并且在 3.1 版本的 dotnet build 中不能忽略,是的,多目标设置应该可以工作,你可以按照此链接构建多目标应用程序https://learn。 microsoft.com/en-us/dotnet/core/tutorials/libraries#how-to-multitarget