【问题标题】:How to exclude certain folders while copying using MSBUILD如何在使用 MSBUILD 进行复制时排除某些文件夹
【发布时间】:2011-01-06 19:44:08
【问题描述】:

看起来应该相当简单,但在使用 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)"/>

在项目组部分,我有一个 ExcludeFromBuild 项目,其中列出了我要排除的文件类型。最重要的是,我想排除“obj”和“Web References”文件夹。

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

沙赫扎德

【问题讨论】:

    标签: msbuild build copy


    【解决方案1】:

    您需要为此创建一个新的 ItemGroup。我在下面添加了AppFolderWithExclusions

    <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 添加AppFolderWithExclusions 是不同的。编辑了我的答案以澄清。
    • 在 AppFolder 中,不应该是 Exclude="@(ExcludeFromBuild)" 吗? [@] 而不是 [$]。测试后发现这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多