【问题标题】:MsBuild pass PropertyGroup between projectsMsBuild 在项目之间传递 PropertyGroup
【发布时间】:2012-01-25 19:36:41
【问题描述】:

我有两个 Visual Studio 数据库项目。

Project A
Project B
 - References: Project A

项目 A 是一个独立的数据库项目,而项目 B 具有对 A 的引用。 当我构建项目 B 时,我从 MsBuild 得到以下预期输出:

------ Build started: Project: Project A, Configuration: Debug Any CPU 
--------- Build started: Project: Project B, Configuration: Debug Any CPU ------
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========

Project B 中,我有一个按以下方式定义的属性:

  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <MyProperty>MyValue</MyProperty>
  </PropertyGroup>

现在,在这两个项目中,我创建了一个简单的任务,该任务在我构建项目之前执行并打印变量的值: 项目 A、B:

  <Target Name="Print" BeforeTargets="Build">
    <Message Text="MyProperty is: $(MyProperty)" Importance="high" />
  </Target>

不幸的是,我在 MsBuild 上遇到了这种行为:

------ Build started: Project: Project A, Configuration: Debug Any CPU 
MyProperty is:
--------- Build started: Project: Project B, Configuration: Debug Any CPU ------
MyProperty is: MyValue
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========

我在项目 B 中使用此配置引用了项目 A:

  <ItemGroup>
    <ProjectReference IncludeProjectA.dbproj">
      <Name>ProjectA</Name>
      <Project>{f6546bef-cea7-4e7f-b6f1-cce1c06c7b1a}</Project>
      <Private>True</Private>
    </ProjectReference>
  </ItemGroup>

有什么方法可以将项目 B 中的 MyProperty 的值注入到项目 A 中?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    如何创建一个“目标”文件以在两个项目之间共享?因此,您将拥有类似 "DatabaseProjects.Targets" 的内容,其中将包含基本的 MSBuild 标头标记,然后是您的属性组。

    然后在项目 A 和项目 B 中,配置定义之后,使用 import 元素导入目标文件,如 &lt;Import Project="DatabaseProjects.Targets" /&gt;

    这样,该属性将不在任何单个项目中,而是在共享的“目标导入”中。

    为了增加可见性,您可以将目标文件作为链接的“无”/“不复制”文件添加到您的项目中。

    【讨论】:

    • 没错,这就是我所做的。我创建了一个自定义目标,它构建多个项目,并在每个项目中使用 标记传递我需要的变量。
    • 你能分享你跨项目重复使用的项目文件吗?
    • 它并没有什么特别之处,您只需要一个标准的 MSBuild 项目文件根元素 - &lt;Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;。然后是你想要的任何属性,比如PropertyGroup
    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多