2011-06-22 8 views
6

MSBuildの変数を参照する際の相違点は何ですか?例えば、以下では、@および$、ならびに%が使用される。ここで

<Copy SourceFiles="@(Files)" DestinationFolder="$(TempBuildDir)\%(RecursiveDir)"> 
    <Output TaskParameter="CopiedFiles" ItemName="DeployFiles" /> 
</Copy> 

答えて

11

$ @プロパティへのアクセス(単純な値を含む変数のいくつかの種類)

を表しためでありますアイテムであり、通常、名前の下にメタデータが添付されたファイルのグループです。

%は、アイテムのメタデータへのアクセスを示します。そこwellknown metadatasは自動的にアイテムに添付(RecursiveDirのように、MSDNでの定義を参照)されている、またはあなたがあなたの項目を定義するとき

は、あなたがこのような@(ファイル)を定義すると言うことができますあなた自身のメタデータを添付することができます。

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

cがあれば:\ソースが含まれているファイルの1.TXTは、B/2.dll現在、C/3.xmlは、およびC:\ソース2は/ 4.exe、@(ファイル)は、この

    状に形成されている含まれてい
  • ファイルc:\ source \ 1.txt、メタデータは color = 'Blue'、RecursiveDir = ''

  • ファイルc:\ソース\ bは\の2.dll現在、メタデータ 色= 'ブルー' とRecursiveDir = 'B' と

  • ファイルc:\ソース\ Cは\の3.xml、メタデータ 色= 'ブルー' とRecursiveDir = 'C'

  • ファイルc:\ソース2 \ A \ 4.exe、 メタデータの色= '赤' と RecursiveDir = ''

TempBuiを定義した場合C:\ TEMP

あなたの例は次のように読み取ります:あなたは、単純な値を含む変数のいくつかの種類があり、この

<PropertyGroup> 
<TempBuildDir>c:\temp<TempBuildDir> 
</PropertyGroup> 

ようldDirによって形成されているディレクトリにアイテムファイルで定義されたすべてのファイルをコピーします変数TempBuildDirのconcatening値をファイルが見つかったRecursiveディレクトリに置き換えます。

あなたがで終わる:

  • C:\一時\の1.TXT

  • C:\一時\ bは\の2.dll現在

  • C:\臨時雇用者は、C \ \ 3.xml

  • c:\ temp \ a \ 4。exe

+0

非常に詳細な回答ありがとうございます。私は許可された時間よりも多くの時間これを投票するでしょう:) – 7wp

+0

あなたを歓迎します;) –

関連する問題