能否更简单/优雅地编写此MSBuild目标?
我的MSBuild知识有些生疏。我今天写了这个工作目标,但我相信它可以缩小 有谁能看清楚如何更简单地表达这一点吗能否更简单/优雅地编写此MSBuild目标?,msbuild,Msbuild,我的MSBuild知识有些生疏。我今天写了这个工作目标,但我相信它可以缩小 有谁能看清楚如何更简单地表达这一点吗 <Target Name="FolderX"> <PropertyGroup> <Dest>$(StandardModelDir)\FolderX</Dest> </PropertyGroup> <ItemGroup> <File Include
<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>
$(StandardModelDir)\FolderX
$(Dest)\Views--Alpha
$(Dest)\Views--Alpha
$(Dest)\Views--好极了
$(Dest)\Views--好极了
请注意,文件不是递归存储在源目录中,因此我不能使用
%(RecursiveDir)
您可以使用掩码。在您的情况下,可以使用文件扩展名掩码*.sql
MSDN中的示例:
谢谢,但前提是源文件与目标文件递归地位于源代码树中的同一嵌套中。在本例中,情况并非如此(请参见编辑)。
<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>