2012-01-20 41 views
3

我有一个测试文件在MSBuild中创建一个ZIP。我需要排除某些文件夹。我有以下工作。MSBuild排除语法不起作用

<PropertyGroup> 
    <TestZipPath>C:\path\to\my\folder\</TestZipPath> 
    <ExcludeList>$(TestZipPath)\**\_svn\**;$(TestZipPath)\**\.svn\**;$(TestZipPath)\**\obj\**;$(TestZipPath)\**\*.config</ExcludeList> 
</PropertyGroup> 

<ItemGroup> 
    <ZipFiles Include="$(TestZipPath)\**\*.*" Exclude="$(ExcludeList)" /> 
</ItemGroup> 

<Message Text="%(ZipFiles.FullPath)"/> 

这似乎对我来说非常冗长。理想情况下,我希望ExcludeList的格式如下:

<ExcludeList>**\_svn\**;**\.svn\**;**\obj\**;**\*.config</ExcludeList> 

但它似乎并不奏效。为什么我需要在每个排除模式之前包含$(TestZipPath)? **不打算在路径的开始处使用?有一个更好的方法吗?

回答

4

我想通了这个问题。问题是我试图包含与我正在执行的msbuild文件不相关的文件。 MSBuild假定文件路径相对于此位置,并且无法更改该位置。正因为如此,我所有的道路必须是绝对的,不能是相对的。

1

尝试在每个包含模式之前添加'。\'。像这样:

'.\**\obj\**'