如何在使用MSBUILD复制时排除某些文件夹

如何在使用MSBUILD复制时排除某些文件夹,msbuild,build,copy,Msbuild,Build,Copy,看起来应该相当简单,但在使用MSBUILD复制任务时排除文件夹时遇到问题。以下是我正在做的: <ItemGroup> <Compile Include="$(_SolutionPath)$(_SolutionName)" /> <ProjectFiles Include="..\$(_WebDirectory)\*.csproj" Exclude="*.master.csproj"/> <Exclud

看起来应该相当简单,但在使用MSBUILD复制任务时排除文件夹时遇到问题。以下是我正在做的:

   <ItemGroup>
        <Compile Include="$(_SolutionPath)$(_SolutionName)" />
        <ProjectFiles Include="..\$(_WebDirectory)\*.csproj" Exclude="*.master.csproj"/>
        <ExcludeFromBuild Include="..\$(_WebDirectory)\**\*.cs; ..\$(_WebDirectory)\**\*.sln; ..\$(_WebDirectory)\**\*.csproj; ..\$(_WebDirectory)\Web References; ..\$(_WebDirectory)\obj;"/>
        <AppFolder Include="..\$(_WebDirectory)\**\*.*" Exclude="$(ExcludeFromBuild)"/>
    </ItemGroup>

<Copy SourceFiles="@(AppFolder)" DestinationFiles="c:\test\%(RecursiveDir)%(FileName)%(Extension)"/>

在itemgroup部分,我有一个ExcludeFromBuild项,它列出了我要排除的文件类型。除此之外,我想排除“obj”和“Web引用”文件夹

我怎样才能做到这一点?如果需要更多信息,请告诉我。多谢各位


shahzad

您需要为此创建一个新的项目组。我在下面添加了
AppFolderWithExclutions

<ItemGroup>
     <Compile Include="$(_SolutionPath)$(_SolutionName)" />
     <ProjectFiles Include="..\$(_WebDirectory)\*.csproj" Exclude="*.master.csproj"/>
     <ExcludeFromBuild Include="..\$(_WebDirectory)\**\*.cs; ..\$(_WebDirectory)\**\*.sln; ..\$(_WebDirectory)\**\*.csproj; ..\$(_WebDirectory)\Web References; ..\$(_WebDirectory)\obj;"/>
     <AppFolder Include="..\$(_WebDirectory)\**\*.*" Exclude="$(ExcludeFromBuild)"/>

     <AppFolderWithExclusions Include="@(AppFolder)" Exclude="obj\**\*.*;Web References\**\*.*" />
 </ItemGroup>


(未测试;可能包括语法输入错误)

此处与原始问题的实际区别是什么?@chwi Adding
AppFolderWithExclusions
是区别。编辑我的答案以澄清。在AppFolder中,它不应该是Exclude=“@(ExcludeFromBuild)”吗?[@]而不是[$]。测试后发现这个。