gpt4 book ai didi

msbuild - 继承父 MsBuild 文件

转载 作者:行者123 更新时间:2023-12-04 05:56:18 24 4
gpt4 key购买 nike

我的项目结构如下所示:

parent -- child 项目1 -- child 项目2 -- child 项目3

我在每个 ChildProjects 节点下都有一个 msbuild 文件,用于构建相关项目、创建 zip 文件、在 subversion 中标记它们等

然而,大部分逻辑在 ChildProject 之间是通用的。我想知道我是否可以重构这个通用逻辑以位于父级的另一个 msbuild 文件中并让每个子级继承它?

对此有任何想法表示赞赏。

最佳答案

您可以使用以下语法将通用目标放入包含的文件中,您还将在项目文件中看到它:

<Import Project="path to file.targets"/>

注意事项:

  • 惯例是使用 .targets 扩展名,但这并不重要。
  • 放置导入的位置很重要,具体取决于您是否希望能够覆盖导入的目标文件中的属性或目标。
  • 目标与方法不同,您不能多次调用它们,但您可以影响它们的调用顺序。
  • 如果您需要要多次调用的可重用 block ,请创建自定义任务库,但请查看 MSBuildExtensionPack首先看看它是否有你想要的东西。

调用目标

关于 CallTarget 的问题. CallTarget 将以与 DependsOnTargetsBeforeTargetsAfterTargets 相同的方式调用指定的目标。目标只有在尚未运行时才会运行。请参阅以下示例:

<?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

关于msbuild - 继承父 MsBuild 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9481065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com