如何强制Swashbuckle.Aspnetcore.Cli使用netcoreapp3.1



我正在将一个项目从2.2升级为使用.Net Core 3.1,并且正在努力使我的工具正常工作。

我在.csproj文件中有这个部分,它在发布时生成一个swagger.json文件——它在我们的构建管道中执行,并作为工件发布。

<ItemGroup>
<DotNetCliToolReference Include="Swashbuckle.AspNetCore.Cli" Version="5.2.1" />
</ItemGroup>
<Target Name="Swagger" AfterTargets="PrepareForPublish" DependsOnTargets="Build" Outputs="$(PublishDir)swagger.json">
<Exec Command="dotnet swagger tofile --output $(PublishDir)swagger.json $(OutputPath)$(AssemblyName).dll v1" />
</Target>

但我得到了这些错误:

Package Swashbuckle.AspNetCore.Cli 5.2.1 is not compatible with netcoreapp2.2 (.NETCoreApp,Version=v2.2). Package Swashbuckle.AspNetCore.Cli 5.2.1 supports:
- netcoreapp2.1 (.NETCoreApp,Version=v2.1) / any
- netcoreapp3.0 (.NETCoreApp,Version=v3.0) / any

和:

Invalid project-package combination for Swashbuckle.AspNetCore.Cli 5.2.1. DotnetToolReference project style can only contain references of the DotnetTool type

奇怪的是,我的项目使用的是3.1——我在"netcoreapp2.2"one_answers"2.2"上都做了ctrl+f,但找不到任何指定的地方。如何强制我的CLI工具使用正确的.NET Core版本?

我遇到了同样的问题,并按照此处描述的安装步骤解决了它:https://github.com/domaindrivendev/Swashbuckle.AspNetCore#retrieve-swagger-directly-from-a-startupassembly,并通过删除项目文件的ItemGroup:

<ItemGroup>
<DotNetCliToolReference Include="Swashbuckle.AspNetCore.Cli" Version="5.2.1" />
</ItemGroup>

我在尝试使用dotnet swagger时遇到了同样的问题。我改为只使用swagger,这就解决了问题。正如@Mike所说,从项目文件中删除ItemGroup并全局安装cli,如下所示:https://github.com/domaindrivendev/Swashbuckle.AspNetCore#retrieve-型锻方向-从启动到组装

最新更新