这个MSBuild目标可以更简单/更优雅地编写吗?

时间:2014-01-31 03:23:42

标签: msbuild

我的MSBuild知识有点生疏。我今天写了这个工作目标,但我确信它可以减小尺寸。

有人能看到如何更简单地表达这个吗?

 <Target Name="FolderX">

    <PropertyGroup>
        <Dest>$(StandardModelDir)\FolderX</Dest>
    </PropertyGroup>

    <ItemGroup>
        <File Include="$(CustDir)\File1.sql">
            <Dest>$(Dest)\Views--Alpha</Dest>
        </File>
        <File Include="$(CustDir)\File2.sql">
            <Dest>$(Dest)\Views--Alpha</Dest>
        </File>
        <File Include="$(CustDir)\File3.sql">
            <Dest>$(Dest)\Views--Bravo</Dest>
        </File>
        <File Include="$(CustDir)\File4.sql">
            <Dest>$(Dest)\Views--Bravo</Dest>
        </File>
    </ItemGroup>

    <Copy
       SourceFiles="@(File)"
       DestinationFolder="%(File.Dest)\.."
    />
</Target>

请注意,文件不会以递归方式存储在源目录中,因此我无法使用%(RecursiveDir)

1 个答案:

答案 0 :(得分:0)

您可以使用面具。在您的情况下,您可以使用文件扩展名掩码,* .sql

来自MSDN的示例:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <MySourceFiles Include="c:\MySourceTree\**\*.*"/>
    </ItemGroup>

    <Target Name="CopyFiles">
        <Copy
            SourceFiles="@(MySourceFiles)"
            DestinationFiles="@(MySourceFiles->'c:\MyDestinationTree\%(RecursiveDir)%(Filename)%(Extension)')"
        />
    </Target>

</Project>