Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET Core: Exclude or include files on publish

There were before aspdotnet1.0 include/exclude sections on project.json file

{   "exclude": [     "node_modules",     "bower_components"   ],   "publishExclude": [     "**.xproj",     "**.user",     "**.vspscc"   ] } 

Where is this section in ASP.NET Core 1.1 (there is no project.json)? Are there similar sections on .csproj file or .pubxml?

like image 398
hcp Avatar asked Mar 10 '17 06:03

hcp


2 Answers

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.

like image 130
Set Avatar answered Oct 04 '22 05:10

Set


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> 
like image 25
Craig Wilson Avatar answered Oct 04 '22 07:10

Craig Wilson