Rico Suter edited this page May 14, 2018 · 27 revisions

Package: NSwag.MSBuild

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 Command="$(NSwagExe) webapi2swagger /assembly:$(OutDir)/MyWebAssembly.dll /controller:MyNamespace.MyController /output:swagger.json" />
    <Exec Command="$(NSwagExe) swagger2tsclient /input:swagger.json /output:Scripts/MyController.ts" />

For better testability, 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" />

For .NET Core (in the sample 2.0) we recommend:

<Target Name="NSwag" AfterTargets="Build">
  <Copy SourceFiles="@(Reference)" DestinationFolder="$(OutDir)References" />
  <Exec Command="$(NSwagExe_Core20) run nswag.json /variables:Configuration=$(Configuration)" />
  <RemoveDir Directories="$(OutDir)References" />

More information on nswag run.


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##) (e.g. $(NSwagExe_Core20) for .NET Core 2.0) should be used instead of $(NSwagExe).

Available properties:

  • NSwagExe
  • NSwagExe_x86
  • NSwagExe_Core10
  • NSwagExe_Core11
  • NSwagExe_Core20
  • NSwagExe_Core21
  • NSwagDir
  • NSwagDir_Core10
  • NSwagDir_Core11
  • NSwagDir_Core20
  • NSwagDir_Core21


See Command Line for more information.

TODO: Rename page to NSwag.MSBuild