2014-01-31 37 views
0

我的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)

回答

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> 
+0

感谢,但假设源文件是在源代码树递归在同一嵌套作为目标。在这种情况下不是这样(参见编辑)。 –

相关问题