当引用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
不客气;) –