Skip to content

NSwag.MSBuild

Rico Suter edited this page Mar 12, 2023 · 12 revisions

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

NSwag.MSBuild.props

See Command Line for more information.

Also see ServiceProjectReference for the new feature.