我正在尝试从TFS 2008生成定义中的自定义部署步骤中排除一系列文件。我想包括所有文件,除了那些以p0或p1开头的文件。以下是我的一些尝试…
<ItemGroup> <FilesToCopy Include="$(BinariesRoot)\Debug\*.*" Exclude="$(BinariesRoot)\Debug\P0*.*;$(BinariesRoot)\Debug\P1*.*" /> </ItemGroup>
和
<PropertyGroup> <FilesToExclude>$(BinariesRoot)\Debug\P0*.*;$(BinariesRoot)\Debug\P1*.*</FilesToExclude> </PropertyGroup> <ItemGroup> <FilesToCopy Include="$(BinariesRoot)\Debug\*.*" Exclude="$(FilesToExclude)" /> </ItemGroup>
<PropertyGroup> <FilesToExclude>$(BinariesRoot)\Debug\P0*.*;$(BinariesRoot)\Debug\P1*.*</FilesToExclude> </PropertyGroup> <ItemGroup> <FilesToCopy Include="$(BinariesRoot)\Debug\*.*" Exclude="@(FilesToExclude)" /> </ItemGroup>
当我用这个复制文件的时候…
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="T:\Deployment\" />
…它总是复制所有文件(即不排除p0和p1文件)。
使用诊断输出运行生成 MSBuild ... /clp:v=diag 并查看项目的值。您还可以简单地添加一个步骤来输出文件列表,如下所示:
MSBuild ... /clp:v=diag
<Message Text="SrcFiles: @(FilesToCopy)" />
看上面的例子,第二个代码片段是正确的,第三个代码片段不是(通过$not via@引用属性)