ASP.NET Core: Exclude or include files on publish
Solution 1:
From documentation: if you wish to specify, for example, some files to get published with your app, you can still use the known mechanisms in
csproj
for that (for example, the<Content>
element).
There is a CopyToPublishDirectory
attribute for ItemGroup
elements that determines whether to copy the file to the publish directory and can have one of the following value:
- Always,
- PreserveNewest
- Never
Note, that there is also similar CopyToOutputDirectory
attribute for output folder.
Example (from here):
<ItemGroup>
<None Include="notes.txt" CopyToOutputDirectory="Always" />
<!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } -->
<Content Include="files\**\*" CopyToPublishDirectory="PreserveNewest" />
<None Include="publishnotes.txt" CopyToPublishDirectory="Always" />
<!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->
</ItemGroup>
If you are interesting how project.json -.csproj
migration use CopyToPublishDirectory
attribute to migrate publish options, you may look into MigratePublishOptionsRule class in dotnet cli repo.
Solution 2:
In .csproj
for Visual Studio versions 15.3 and higher, this keeps the files visible in Visual Studio (whereas "Content Remove" does not), and prevents the files from being published.
<ItemGroup>
<Content Update="appsettings*.json" CopyToPublishDirectory="Never" />
</ItemGroup>