web-dev-qa-db-fra.com

Dans un fichier .csproj, à quoi sert <None Include = "...">?

Comment est

<None Include="C:\foo.bar" />

différent de

<Content Include="C:\foo.bar" />

?

121
Emmett

L'article MSDN sur la propriété build action explique les différences.

None - Le fichier n'est pas inclus dans le groupe de sortie du projet et n'est pas compilé dans le processus de génération. Un exemple est un fichier texte contenant de la documentation, tel qu'un fichier Lisezmoi.

Contenu - Le fichier n'est pas compilé, mais est inclus dans le groupe de sortie Contenu. Par exemple, ce paramètre est la valeur par défaut d'un fichier .htm ou d'un autre type de fichier Web.

126
adrianbanks

Une différence est de savoir comment ils sont publiés; Les éléments "Aucun" ne sont pas inclus dans une publication, contrairement aux éléments "Contenu"; par exemple, dans la boîte de dialogue "Fichiers d'application" de l'onglet Publier.

30
Marc Gravell

Je ne suis pas sûr à 100% (j'ai lu la description MSDN de la propriété Build Action) mais je copie simplement cette réponse de MSDN vers StackOverflow ne répond pas complètement à ma question.

La différence de Aucun et Conten n'a un effet que sur les projets Web. Pour un projet en ligne de commande, un projet WinForm ou un projet UnitTest (dans mon cas), etc. Aucun et Conten n'ont pas de comportement différent.

MSDN: "groupe de sortie de projet" ou "groupe de sortie de contenu" uniquement les termes utilisés dans un projet Web, non?

12
hfrmobile

Dans mon cas, mon fichier MSBuild avait un ItemGroup pour les ressources d'image qui se présentait comme suit:

  <ItemGroup>
    <Content Include="Resources\image001.png" />
    <Content Include="Resources\image002.png" />
    <Content Include="Resources\image003.png" />
    <Content Include="Resources\image004.png" />
    <None Include="Resources\image005.png" />
    <None Include="Resources\image006.png" />
    <None Include="Resources\image007.png" />
  </ItemGroup>

Alors que mon projet se développait bien, cela m'a laissé me demander pourquoi j'avais un mélange d'éléments de type d'élément Content et None dans mon ItemGroup. Cette article MSDN (pour Visual Studio 2010) m'a donné les conseils que je cherchais:

Notez que lorsque l'éditeur de ressources ajoute une image, il définit Action de génération sur Aucune , car le fichier .resx fait référence au fichier image. Au moment de la construction, l'image est extraite dans le fichier .resources créé à partir du fichier .resx. L'image est ensuite facilement accessible via la classe fortement typée générée automatiquement pour le fichier .resx. Par conséquent, vous ne devez pas modifier ce paramètre en Ressource intégrée , car cela inclurait l'image deux fois dans l'assembly.

Résolution: Avec ces conseils, à l'aide d'un éditeur de texte, j'ai changé les éléments de type d'élément Content en None.

En outre, pour un aperçu des éléments MSBuild, consultez ceci article MSDN .

7
DavidRR

J'ai un projet qui ne contient aucun élément compilable (il stocke html et javascript pour les tests unitaires de jasmin).

Un jour, ma solution (qui contenait ledit projet) a cessé de compiler en disant "La cible" Build "n'existe pas dans le projet".

J'ai ajouté une importation pour apporter le compilateur, qui a bien fonctionné sur ma machine mais n'a pas réussi à utiliser msbuild sur le serveur de build.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

J'ai ensuite changé une ligne de

<None Include="SpecRunner.html" />

à

<Content Include="SpecRunner.html" />

et cela a également fonctionné sur le serveur de build.

3
cedd

Vous avez besoin de Aucun dans un fichier de projet de modèle pour inclure les fichiers que vous définissez dans le .vstemplate sinon ils sont perdus dans le processus de création et de traduction. Ils sont laissés dans le dossier temporaire qu'il utilise pour tout construire, puis supprimés peu de temps après.

2
CAD bloke

Dans mon cas . Pubxml est l'un de ces fichiers parmi la liste None. Il n'est pas destiné à la création de solutions ou à un fichier statique pour un projet Web. Mais pour publier le site sur Azure, les configurations y sont présentes.

Selon l'article de Microsoft, ce sont les principaux types que nous voyons parmi les balises de fichier . Csproj:

Aucun - Le fichier n'est pas inclus dans le groupe de sortie du projet et n'est pas compilé dans le processus de génération. Un exemple est un fichier texte contenant de la documentation, tel qu'un fichier Lisezmoi.

Compiler - Le fichier est compilé dans la sortie de génération. Ce paramètre est utilisé pour les fichiers de code.

Contenu - Le fichier n'est pas compilé, mais est inclus dans le groupe de sortie Contenu. Par exemple, ce paramètre est la valeur par défaut d'un fichier .htm ou d'un autre type de fichier Web.

Ressource intégrée - Ce fichier est incorporé dans la sortie principale de la construction du projet en tant que DLL ou exécutable. Il est généralement utilisé pour les fichiers de ressources.

0
krishna kanth