Donc, mon problème est assez simple. Il y a des fichiers que je veux copier dans le répertoire de sortie de la construction, qu'il s'agisse d'une version de débogage ou d'une publication publiée. Toute l'information que je peux trouver concerne l'ancienne approche de configuration JSON. Quelqu'un at-il un exemple d'utilisation du csproj avec dotnetcore?
Réponses
Trop de publicités?Il y a assez peu de moyens pour atteindre vos objectifs, en fonction de vos besoins.
L'approche la plus simple est de définir les métadonnées (CopyToOutputDirectory
/ CopyToPublishDirectory
) conditionnel des éléments (en supposant .txt
être None
élément à la place de Content
, si cela ne fonctionne pas, essayez <Content>
plutôt):
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<None Update="foo.txt" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
Si plus de contrôle est requis, le plus polyvalent approche consiste à ajouter des cibles que des crochets dans le processus de construction dans le fichier csproj:
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
<Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" />
</Target>
<Target Name="CopyCustomContentOnPublish" AfterTargets="Publish">
<Copy SourceFiles="foo.txt" DestinationFolder="$(PublishDir)" />
</Target>
Cette fonction permet de copier un fichier dans le répertoire respectif. Pour plus d'options pour l' <Copy>
tâche de voir sa documentation. Pour le limiter à certaines configurations, vous pouvez utiliser un Condition
d'attribut:
<Target … Condition=" '$(Configuration)' == 'Release' ">
Cette Condition
attribut peut être appliqué à la fois sur l' <Target>
de l'élément ou de la tâche éléments comme l' <Copy>
.
Bien que cela m'a aidé à résoudre mon problème, cela ne fonctionnait pas pour tous les fichiers d'un sous-répertoire. J'ai également utilisé Content Include
plutôt que Content Update
;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Include="layouts\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
J'avais besoin d'une sélection de modèles HTML pour être consommable à la fois côté client et côté serveur (Handlebars js)
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Update="wwwroot\html-templates\**\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>