gpt4 book ai didi

MsBuild 在项目之间传递 PropertyGroup

转载 作者:行者123 更新时间:2023-12-04 00:46:35 25 4
gpt4 key购买 nike

我有两个 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 ==========

项目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>

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

最佳答案

如何创建一个在两个项目之间共享的“目标”文件?所以你会有类似 "DatabaseProjects.Targets" 的东西,它将具有基本的 MSBuild header 标记,然后是您的属性组。

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

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

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

关于MsBuild 在项目之间传递 PropertyGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009106/

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