當引用MSBuild中的變量時有什麼區別。例如在下面有一個@
和$
以及一個%
使用。
<Copy SourceFiles="@(Files)" DestinationFolder="$(TempBuildDir)\%(RecursiveDir)">
<Output TaskParameter="CopiedFiles" ItemName="DeployFiles" />
</Copy>
當引用MSBuild中的變量時有什麼區別。例如在下面有一個@
和$
以及一個%
使用。
<Copy SourceFiles="@(Files)" DestinationFolder="$(TempBuildDir)\%(RecursiveDir)">
<Output TaskParameter="CopiedFiles" ItemName="DeployFiles" />
</Copy>
$表示一個屬性(某種變量,它包含一個簡單的值)
@是訪問項目,通常是一組名稱下附加元數據的文件
%表示對項目元數據的訪問。有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 \一個\ 4.exe,與元數據 顏色= '紅色' 和 RecursiveDir = 'A'
如果你定義了TempBui ldDir這樣
<PropertyGroup>
<TempBuildDir>c:\temp<TempBuildDir>
</PropertyGroup>
你有一些類型的變量,它包含一個簡單的值:C:\ TEMP
你的例子倒像是這樣的:在項目文件中定義的每個文件複製在由形成目錄將變量TempBuildDir的值與您找到該文件的遞歸目錄連接起來。
你結束:
C:\ TEMP \ 1.txt的
C:\ TEMP \ B \ 2.DLL
C:\臨時工\ C \ 3.xml
c:\ temp \ a \ 4。exe
這裏是特殊字符的完整列表:
非常詳細的答案謝謝。我會投票的次數超過允許的次數:) – 7wp
不客氣;) –