Параметры пути в OpenApiReference (Nswag/Visual Studio) в файле csproj (msbuild)

#msbuild #csproj #nswag

Вопрос:

Я ссылаюсь на службу OpenAPI, использующую функцию «Подключенные службы» в Visual Studio (2002 до 5, но такое же поведение в VS 2019). Этот инструмент основан на NSwag. В документах говорится, что я могу применить все настройки из Nswag в определенных элементах <OpenApiReference> элемента в *.csproj.

Это работает, но я хочу использовать выходной путь, отличный от пути по умолчанию (obj), и этот параметр не может обрабатывать .. пути и пути с пробелами. Та же настройка в инструменте командной строки Nswag работает, как и ожидалось.

Мой первый подход в *.csproj с выходным путем без пробелов:

 <ItemGroup>
  <OpenApiReference Include="swagger.json" 
                    CodeGenerator="NSwagCSharp" Namespace="Demo.Proxy" 
                    ClassName="ContractService"
                    OutputPath="ConnectedServicesBackendContractService.cs"
                    >
    <Options>/DateTimeType:DateTime /GenerateClientInterfaces:true</Options>
  </OpenApiReference>
</ItemGroup>
 

В результате получается файл objectConnectedServicesСерверная частьContractService.cs. Правильный.

Но я хочу использовать папку «Подключенные службы» (с пробелом).:

 <ItemGroup>
  <OpenApiReference Include="swagger.json" 
                    CodeGenerator="NSwagCSharp" Namespace="Demo.Proxy" 
                    ClassName="ContractService"
                    OutputPath="Connected ServicesBackendContractService.cs"
                    >
    <Options>/DateTimeType:DateTime /GenerateClientInterfaces:true</Options>
  </OpenApiReference>
</ItemGroup>
 

В результате получается файл obj/Подключен. Он останавливается перед пространством. Не правильно.

Я пытался:

  • —> тот же результат, остановитесь перед пробелом
  • amp;quot; от начала до конца —> ошибка недопустимого символа
  • .. путь для выхода из obj —> ошибка недопустимого символа

Кроме того, просто из любопытства, я использовал такие свойства, как это:

   <PropertyGroup>
    <ServicesPath>ConnectedServicesContractService.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>
 

Тот же результат здесь: «Подключенные службы» работают, «Подключенные службы» — нет; пробел убивает путь, и результат просто «Подключен», остальное игнорируется.

Однако это устраняет проблему с папкой «obj» и перемещает файл на соответствующий уровень.

Я думаю, что это ошибка в OpenApiReference, но я хочу спросить, прежде чем подать его, мог ли я что-то упустить. На всякий случай.