-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
NSwag.MSBuild
Package: NSwag.MSBuild
Important for .NET Core: Assembly loading#net-core
After installing the NSwag.MSBuild
NuGet package in your project, you can use the variable $(NSwagExe)
in your .csproj
file to run the NSwag command line tool in an MSBuild target. This way the tools can easily be updated via NuGet. The /controller
parameter can be omitted to generate a Swagger specification for all controllers.
<Target Name="NSwag" AfterTargets="Build">
<Exec EnvironmentVariables="ASPNETCORE_ENVIRONMENT=Development" Command="$(NSwagExe) aspnetcore2openapi /assembly:$(TargetDir)MyWebAssembly.dll /output:swagger.json" />
<Exec Command="$(NSwagExe) openapi2tsclient /input:swagger.json /output:Scripts/MyController.ts" />
</Target>
For better testability and stable output (defaults may change), it is recommended to create an NSwag Configuration Document (e.g. with NSwagStudio) and use:
<Target Name="NSwag" AfterTargets="Build">
<Exec Command="$(NSwagExe) run nswag.json /variables:Configuration=$(Configuration)" />
</Target>
Recommended for .NET Core/NET5 and later:
<PropertyGroup>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
</PropertyGroup>
<Target Name="NSwag" AfterTargets="PostBuildEvent" Condition=" '$(Configuration)' == 'Debug' ">
<Exec WorkingDirectory="$(ProjectDir)" EnvironmentVariables="ASPNETCORE_ENVIRONMENT=Development" Command="$(NSwagExe_Net50) run nswag.json /variables:Configuration=$(Configuration)" />
</Target>
For more information about the missing DLLs in .NET Core, see Assembly loading#net-core.
More information on nswag run.
Runtime:
If you need to run the NSwag command line in x86 mode, use the $(NSwagExe_x86)
placeholder.
For .NET Core projects, one of the placeholders $(NSwagExe_Core##)
or $(NSwagExe_Net##)
(e.g. $(NSwagExe_Core31)
for .NET Core 3.1) should be used instead of $(NSwagExe)
.
Available properties:
- NSwagExe
- NSwagExe_x86
- NSwagExe_Core21
- NSwagExe_Core31
- NSwagExe_Net50
- NSwagExe_Net60
- NSwagExe_Net70
- NSwagDir
- NSwagDir_Core21
- NSwagDir_Core31
- NSwagDir_Net50
- NSwagDir_Net60
- NSwagDir_Net70
See Command Line for more information.
Also see ServiceProjectReference for the new feature.