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.

Resources

An example project is available on GitHub at https://github.com/spboyer/copydocfile-example for reference.