$ désigne l'accès à une propriété (une sorte de variable qui contient une simple valeur)
@ est pour item, qui est généralement un groupe de fichiers avec des métadonnées attachées sous un nom
% désignent un accès à une métadonnée d'un élément. Il y a wellknown metadatas (comme RecursiveDir, voir la définition dans msdn) fixé automatiquement à un élément, ou vous pouvez joindre vos propres métadonnées lorsque vous définissez vos articles
permet de dire que vous définissez @ (fichiers) comme ceci:
<ItemGroup>
<Files include='c:\source\**\*.*'> <!-- all files in all subfolder in c:\source -->
<Color>Blue</Color> <!-- attach metadata color = 'Blue' to these files -->
</Files>
<Files include='c:\source2\**\*.*'> <!-- all files in all subfolder in c:\source2 -->
<Color>Red</Color> <!-- attach metadata color = 'Red' to these files -->
</Files>
</ItemGroup>
si c: \ source contient des fichiers 1.txt, b/2.dll, c/3.xml, et c: \ source2 contient un/4.exe, @ (fichiers) est formé comme celui-ci
fichier c: \ source \ 1.txt, avec les métadonnées color = 'Bleu' et RecursiveDir = ''
fichier C: \ source de \ b \ 2.dll, avec des métadonnées color = 'Blue' et RecursiveDir = 'b'
fichier C: \ source de \ c \ 3.xml, avec des métadonnées color = 'Blue' et RecursiveDir = 'c'
fichier c: \ source2 \ a \ 4.exe, avec métadonnées couleur = 'rouge' et RecursiveDir = 'a'
Si vous définissez TempBui ldDir comme celui-ci
<PropertyGroup>
<TempBuildDir>c:\temp<TempBuildDir>
</PropertyGroup>
Vous avez une sorte de variable qui contient une valeur simple: c: \ temp
Vos exemples se lit comme ceci: copier tous les fichiers définis au point fichier dans un répertoire qui est formé par concaténation de la variable TempBuildDir avec le répertoire Recursive où vous avez trouvé le fichier.
Vous vous retrouvez avec:
c: \ temp \ 1.txt
c: \ temp \ b \ 2.dll
c: \ temps \ c \ 3.xml
c: \ temp \ a \ 4.exe
Grande réponse détaillée merci. Je voterais ceci plus de fois que celui permis :) – 7wp
De rien;) –