我的项目结构如下:
父 - ChildProjects1 - ChildProjects2 - ChildProjects3
我在每个ChildProjects节点下都有一个msbuild文件,用于构建相关项目,创建zip文件,在subversion中标记它们等等。
然而,大多数这种逻辑在ChildProjects之间很常见。我想知道我是否可以重构这个常用逻辑来坐在父级别的另一个msbuild文件中并让每个孩子继承这个?
对此的任何想法都表示赞赏。
答案 0 :(得分:3)
您可以使用以下语法将常用目标放在您包含的文件中,您也可以在proj文件中看到它:
<Import Project="path to file.targets"/>
关于CallTarget
的问题。 CallTarget将以DependsOnTargets
,BeforeTargets
和AfterTargets
的方式调用指定的目标。目标只有在尚未运行时才会运行。请参阅以下示例:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Foo">
<Target Name="Foo" DependsOnTargets="Bar">
<Message Text="Foo" />
<CallTarget Targets="Bar" />
<CallTarget Targets="Bar" />
</Target>
<Target Name="Bar" AfterTargets="Foo" BeforeTargets="Foo">
<Message Text="Bar" />
</Target>
</Project>
将输出以下内容:
Microsoft (R) Build Engine version 4.0.30319.17929
[Microsoft .NET Framework, version 4.0.30319.18449]
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 24/02/2014 12:06:59.
Project "D:\Dev\Test.proj" on node 1 (default targets).
Bar:
Bar
Foo:
Foo
Done Building Project "D:\Dev\Test.proj" (default targets).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:00.69