我有两个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>
有什么办法可以将Project B的MyProperty值注入Project A吗?
答案 0 :(得分:5)
如何创建要在两个项目之间共享的“Targets”文件?因此,您将拥有类似"DatabaseProjects.Targets"
的内容,它将具有基本的MSBuild标头标记,然后是您的属性组。
然后在项目A和项目B中 配置定义后,使用import元素导入目标文件,如<Import Project="DatabaseProjects.Targets" />
这样,该属性不会出现在任何单个项目中,而是出现在共享的“目标导入”中。
为了增加可见性,您可以将目标文件作为链接的“无”/“不要复制”文件添加到项目中。