web-dev-qa-db-fra.com

ASP.NET Core: Exclure ou inclure des fichiers lors de la publication

Il y avait avant aspdotnet1.0 sections d'inclusion/exclusion sur le fichier project.json

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

Où se trouve cette section dans ASP.NET Core 1.1 (il n'y a pas de project.json)? Existe-t-il des sections similaires dans le fichier .csproj ou .pubxml?

43
hcp

De documentation : si vous souhaitez spécifier, par exemple, certains fichiers à publier avec votre application, vous pouvez toujours utiliser les mécanismes connus de csproj pour cela (par exemple, le <Content> element).

Il existe un attribut CopyToPublishDirectory pour ItemGroupéléments qui détermine si le fichier doit être copié dans le répertoire de publication et peut avoir l'une des valeurs suivantes:

  • Toujours,
  • PreserveNewest
  • Jamais

Notez qu'il existe également un attribut similaire CopyToOutputDirectory pour le dossier de sortie.

Exemple (de ici ):

<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 vous êtes intéressé par la manière dont project.json -.csproj migration utilise l'attribut CopyToPublishDirectory pour migrer les options de publication, vous pouvez consulter MigratePublishOptionsRule classe dans le référentiel de dotnet.

72
Set

Après Visual Studio 2017 15.3

Editez le fichier .csproj pour exclure manuellement la publication de fichiers/dossiers

<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

21
Wagner Pereira

Dans .csproj pour les versions 15.3 et supérieures de Visual Studio, les fichiers sont visibles dans Visual Studio (contrairement à "Suppression du contenu") et empêchent la publication des fichiers.

<ItemGroup>
    <Content Update="appsettings*.json" CopyToPublishDirectory="Never" />
</ItemGroup>
13
Craig Wilson

Avec Visual Studio 2017 (testé dans 15.6.5), vous pouvez cliquer avec le bouton droit de la souris sur le fichier dans le Explorateur de solutions et définir le Action de génération. à Aucun.

Il mettra à jour votre fichier .csproj comme ceci:

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

J'espère que cela t'aides.

9
György Balássy

J'ai remarqué que mes dossiers contenant quelques fichiers n'étaient pas publiés. J'ai essayé de cliquer avec le bouton droit de la souris sur les dossiers du projet pour voir si je pouvais sélectionner une option pour inclure le dossier avec le déploiement. Ce n'est pas là, mais j'ai trouvé si Je sélectionne les fichiers dans le dossier et les marque pour les copier lors du déploiement. Les fichiers seront copiés et créer leur dossier dans le processus.

Cela aide si votre dossier contient des fichiers, mais pas si vos dossiers sont vides.

4
Brady Moritz

Modifiez le fichier .csproj pour exclure manuellement la publication des fichiers/dossiers.

Vous pouvez également vous référer this

Pour le déploiement Web, voir https://blogs.msdn.Microsoft.com/webdev/2010/04/22/web-deployment-excluding-files-and-folders-via-the-web-applications-project- fichier / .

project.json a été remplacé par csproj. Vous pouvez en savoir plus à ce sujet sur https://www.stevejgordon.co.uk/project-json-replaced-by-csproj .

Pour mettre à niveau des projets .NET Core 1.0 existants ou pour utiliser .NET Core 1.1, vous pouvez lire https://blogs.msdn.Microsoft.com/dotnet/2016/11/16/announcing-net-core-1 -1 / .

1