如何从远程招摇过市Url使用msbuild生成API客户端?
下面是一个示例URL: 我正在寻找解决问题的代码示例以及以下问题的行业标准答案:如何从远程招摇过市Url使用msbuild生成API客户端?,msbuild,swagger,nswag,Msbuild,Swagger,Nswag,下面是一个示例URL: 我正在寻找解决问题的代码示例以及以下问题的行业标准答案: 如何在构建时使用MSBuild/dotnet build针对这个swagger.json端点/使用NSwag生成C#API客户端。请注意,我对将此复制为本地文件并生成它不感兴趣;我想特别指出这个端点 为什么/为什么不将生成的API客户端提交到存储库?我们是否应该让构建通过每个构建上的CI/CD构建机生成新的客户端 一般来说,针对活动端点生成API客户端是一个好主意吗?人们遇到了什么问题 关于如何生成客户端: 我知
- 如何在构建时使用MSBuild/
针对这个swagger.json端点/使用NSwag生成C#API客户端。请注意,我对将此复制为本地文件并生成它不感兴趣;我想特别指出这个端点dotnet build
- 为什么/为什么不将生成的API客户端提交到存储库?我们是否应该让构建通过每个构建上的CI/CD构建机生成新的客户端
- 一般来说,针对活动端点生成API客户端是一个好主意吗?人们遇到了什么问题
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NSwag.AspNetCore" Version="13.9.4" />
<PackageReference Include="NSwag.MSBuild" Version="13.9.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<Target Name="NSwag" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<!--You can change this if you you want keep generated code in repository-->
<ClientFileOutDir>$(IntermediateOutputPath)</ClientFileOutDir>
<ClientFile>$(ClientFileOutDir)/Client.cs</ClientFile>
</PropertyGroup>
<Exec Command="$(NSwagExe_Core31) run nswag.json /variables:OutFilename=$(ClientFile)" />
<ItemGroup>
<Compile Include="$(ClientFile)" />
</ItemGroup>
</Target>
</Project>
关于是否生成客户端和实时端点:
我认为这个问题没有行业标准。相反,您需要从任务的要求和您的便利性出发。例如,如果将来可能需要脱机构建,那么“活动端点”将不起作用。或者,如果api是不变的,并且没有更改,则每个构建的生成看起来是不必要的,可能需要生成一次客户端并将其放置在存储库中。关于如何生成客户端: 我知道两种方法 第一个是使用visual studio功能“连接的服务”: 右键单击一个项目->添加->连接的服务。并设置新服务(例如,请参见屏幕截图)。 我没有找到任何关于用户如何设置生成代码的文档。但你可以试试,也许这就足够你完成任务了 第二种是直接使用Nswag: Csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NSwag.AspNetCore" Version="13.9.4" />
<PackageReference Include="NSwag.MSBuild" Version="13.9.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<Target Name="NSwag" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<!--You can change this if you you want keep generated code in repository-->
<ClientFileOutDir>$(IntermediateOutputPath)</ClientFileOutDir>
<ClientFile>$(ClientFileOutDir)/Client.cs</ClientFile>
</PropertyGroup>
<Exec Command="$(NSwagExe_Core31) run nswag.json /variables:OutFilename=$(ClientFile)" />
<ItemGroup>
<Compile Include="$(ClientFile)" />
</ItemGroup>
</Target>
</Project>
关于是否生成客户端和实时端点:
我认为这个问题没有行业标准。相反,您需要从任务的要求和您的便利性出发。例如,如果将来可能需要脱机构建,那么“活动端点”将不起作用。或者,如果api是不变的并且没有更改,那么每个构建的生成看起来是不必要的,并且可能值得生成一次客户机并将其放置在存储库中