2 votes

CopyToPublishDirectory dans .csproj

J'utilise CopyToPublishDirectory dans mon .csproj pour copier les fichiers/dossiers lors de la publication de mon application Dotnet :

<None Update="Views\**\*; wwwroot\**\*">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

Existe-t-il un moyen de copier un dossier et de changer son nom au passage ? Par exemple, je voudrais copier un sous-ensemble de mon dossier node_modules Je pourrais donc créer un nouveau dossier appelé node_modules_dev avec mon sous-ensemble de dépendances npm, et le copier par l'intermédiaire de CopyToPublishDirectory comme node_modules . J'imagine que la syntaxe fonctionnerait à peu près comme ceci :

<None Update="node_modules_dev/**/*" Rename="node_modules">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

Merci

4voto

Martin Ullrich Points 5894

L'astuce ici est de :

  1. Assurez-vous que les éléments ne sont pas encore inclus par défaut, afin qu'il n'y ait pas de métadonnées résiduelles provenant d'expansions précédentes de modèles globaux. Cela peut être fait en ajoutant le chemin d'accès à l'élément DefaultItemExcludes de façon à ce que le sdk web ignore les fichiers.
  2. Utilisez le %(RecursiveDir) qui est disponible pour les éléments développés via des modèles globaux et représente la valeur de tout chemin développé. Ceci sera défini pour l'élément Include="…" syntaxe uniquement d'où 1.

Cela écrasera le chemin cible par défaut vers un nouveau répertoire en utilisant l'option Link métadonnées :

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);node_modules_dev\**</DefaultItemExcludes>
</PropertyGroup>
<ItemGroup>
  <Content Include="node_modules_dev\**\*" Link="node_nodules\%(RecursiveDir)%(FileName)%(Extension)" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X