csproj 文件 (msbuild) 中 OpenApiReference (Nswag/Visual Studio) 中的路径设置

Joe*_*use 7 msbuild csproj nswag

我使用 Visual Studio 中的“连接服务”功能引用 OpenAPI 服务(2002 Prev 5,但 VS 2019 中的行为相同)。该工具基于 NSwag。文档说我可以将 Nswag 的所有设置应用到* .csproj<OpenApiReference>中 element的某些元素中。

这可行,但我想使用与默认(obj)不同的输出路径,并且此设置无法处理 .. 路径和带空格的路径。Nswag 命令行工具上的相同设置可以按预期工作。

我在 * .csproj中使用不带空格的输出路径的第一种方法:

<ItemGroup>
  <OpenApiReference Include="swagger.json" 
                    CodeGenerator="NSwagCSharp" Namespace="Demo.Proxy" 
                    ClassName="ContractService"
                    OutputPath="ConnectedServices\Backend\ContractService.cs"
                    >
    <Options>/DateTimeType:DateTime /GenerateClientInterfaces:true</Options>
  </OpenApiReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这会生成文件obj\ConnectedServices\Backend\ContractService.cs。正确的。

但我想使用“Connected Services”文件夹(带空格):

<ItemGroup>
  <OpenApiReference Include="swagger.json" 
                    CodeGenerator="NSwagCSharp" Namespace="Demo.Proxy" 
                    ClassName="ContractService"
                    OutputPath="Connected Services\Backend\ContractService.cs"
                    >
    <Options>/DateTimeType:DateTime /GenerateClientInterfaces:true</Options>
  </OpenApiReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这会生成一个文件obj/Connected。它停在空间之前。不正确。

我试过:

  • %20--> 相同的结果,在空格前停止
  • &quot;从开始到结束 --> 无效字符错误
  • ..\退出obj的路径--> 无效字符错误

另外,出于好奇,我使用了这样的属性:

  <PropertyGroup>
    <ServicesPath>ConnectedServices\ContractService.cs</ServicesPath>
  </PropertyGroup>

  <ItemGroup>
  <OpenApiReference Include="swagger.json" CodeGenerator="NSwagCSharp" Namespace="Demo.Proxy" ClassName="ContractService"
                    OutputPath="$([System.IO.Path]::Combine($(MSBuildProjectDirectory),$(ServicesPath)))"
                    >
    <Options>/DateTimeType:DateTime /GenerateClientInterfaces:true</Options>
    </OpenApiReference>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这里的结果相同:“ConnectedServices”有效,“Connected Services”无效;空格杀死了路径,结果只是“已连接”,其余部分被忽略。

但是,这解决了“obj”文件夹问题并将文件移动到正确的级别。

我认为这是OpenApiReference中的一个错误,但我想在提交错误报告之前询问一下,因为我可能忽略了一些东西。万一。