Don't lose your swagger with dotnet build

See GitHub Issue #795 for the details and discussion.

One of the undocumented changes of converting from project.json to csproj, was the <DocumentationFile> no longer automatically copied to the output folder during the build or publish process.

There have been multiple solutions, both pre and post publish scripts. However, understanding how MSBUILD works and finding the simplest way is key. Thanks to Eric Erhardt's latest comment here I think that this is the cleanest way.

Add the following snippet to the .csproj to enable the copy of the documentation file to the output folder.

It supports the F5 options as well as the dotnet build / dotnet publish CLI commands.

Another important option tested was the ability to pass a custom output folder using the --o|--output parameter.

dotnet publish -c Release -o myreleasefolder  

Other options

You can also add additional output locations to the <DocumentationFile> node.


An example project is available on GitHub at for reference.

Tweet Post Share Update Email RSS

Hi, I'm Shayne Boyer, I write this site, work on ASP.NET Core content and Open Source, speak at national and community events while helping teams architect web and cloud applications.

aspnetcore dotnet swagger