#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, но я хочу спросить, прежде чем подать его, мог ли я что-то упустить. На всякий случай.