ASP.NET Núcleo: Excluir o incluir archivos en la publicación


Había antes de aspdotnet1.0 incluir / excluir secciones en project.json archivo

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

¿Dónde está esta sección en ASP.NET Core 1.1 (there is no project.json)? ¿Hay secciones similares en el archivo .csproj o .pubxml?

Author: hcp, 2017-03-10

6 answers

De la documentación : si desea especificar, por ejemplo, algunos archivos para publicarlos con su aplicación, aún puede usar los mecanismos conocidos en csproj para eso (por ejemplo, el elemento <Content>).

Hay un atributo CopyToPublishDirectory para ItemGroup elementos que determina si copiar el archivo al directorio publish y puede tener uno de los siguientes valor:

  • Siempre,
  • PreserveNewest
  • Nunca

Tenga en cuenta que también hay un atributo CopyToOutputDirectory similar para la carpeta de salida.

Ejemplo (de aquí):

<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>

Si le interesa cómo project.json -.csproj migration usa el atributo CopyToPublishDirectory para migrar las opciones de publicación, puede buscar en la clase MigratePublishOptionsRule en el repositorio de cli de dotnet.

 57
Author: Set,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-09 17:51:12

Después de Visual Studio 2017 15.3

Editar el .archivo csproj para excluir manualmente archivos / carpetas de ser publicado

<ItemGroup>
  <Content Remove="src\**" />
  <Content Remove="node_modules\**" />
</ItemGroup>

Ref: https://www.danielcrabtree.com/blog/273/fixing-the-duplicate-content-error-after-upgrading-visual-studio-2017

 14
Author: Wagner Pereira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-07 18:54:07

Me di cuenta de que mis carpetas con algunos archivos en ellos no se estaban publicando - Intenté hacer clic derecho en las carpetas en el proyecto para ver si podía seleccionar una opción para incluir la carpeta con la implementación - no está allí, pero encontré que si selecciono los archivos dentro de la carpeta y los marqué para copiar en la implementación, copiará los archivos y creará su carpeta en el proceso.

Esto ayuda si su carpeta tiene archivos, pero no ayuda si sus carpetas están vacías.

 3
Author: Brady Moritz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-16 04:34:14

Editar el .archivo csproj para excluir manualmente archivos / carpetas de ser publicados.

También puede referirse esto

Para la implementación web, consulte https://blogs.msdn.microsoft.com/webdev/2010/04/22/web-deployment-excluding-files-and-folders-via-the-web-applications-project-file/.

project.json se ha sustituido ahora por csproj. Puedes leer más sobre ello en https://www.stevejgordon.co.uk/project-json-replaced-by-csproj .

Para Mejorar Proyectos existentes de. NET Core 1.0 o para usar Usando. NET Core 1.1 puede leer https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/.

 1
Author: Shridhar R Kulkarni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:22

Con Visual Studio 2017 (probado en 15.6.5), puede hacer clic con el botón derecho en el archivo en el Explorador de soluciones y establecer la acción de compilación en None.

Actualizará tu archivo .csproj así:

<ItemGroup>
  <Content Remove="appsettings.Development.json" />
  <Content Remove="appsettings.json" />
  <Content Remove="npm-shrinkwrap.json" />
  <Content Remove="package.json" />
  <Content Remove="tsconfig.json" />
</ItemGroup>

<ItemGroup>
  <None Include="appsettings.Development.json" />
  <None Include="appsettings.json" />
  <None Include="npm-shrinkwrap.json" />
  <None Include="package.json" />
  <None Include="tsconfig.json" />
</ItemGroup>

Espero que esto ayude.

 1
Author: György Balássy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 04:10:48

En .csproj para las versiones de Visual Studio 15.3 y superiores, esto mantiene los archivos visibles en Visual Studio (mientras que "Content Remove" no lo hace), y evita que los archivos se publiquen.

<ItemGroup>
    <Content Update="appsettings*.json" CopyToPublishDirectory="Never" />
</ItemGroup>
 1
Author: Craig Wilson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-15 02:27:17