我有两个Visual Studio数据库项目.
Project A
Project B
- References: Project A
Run Code Online (Sandbox Code Playgroud)
项目A是一个独立的数据库项目,而项目B引用了A.当我构建项目BI时,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 ==========
Run Code Online (Sandbox Code Playgroud)
在项目B中,我有一个以下列方式定义的属性:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<MyProperty>MyValue</MyProperty>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
现在,在这两个项目中,我创建了一个简单的任务,在构建项目之前执行并打印变量的值:项目A,B:
<Target Name="Print" BeforeTargets="Build">
<Message Text="MyProperty is: $(MyProperty)" Importance="high" />
</Target>
Run Code Online (Sandbox Code Playgroud)
不幸的是我在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 ==========
Run Code Online (Sandbox Code Playgroud)
我在项目B中使用此配置引用了项目A:
<ItemGroup>
<ProjectReference IncludeProjectA.dbproj">
<Name>ProjectA</Name>
<Project>{f6546bef-cea7-4e7f-b6f1-cce1c06c7b1a}</Project>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以将Project B的MyProperty值注入Project A吗?
如何创建要在两个项目之间共享的"Targets"文件?所以你会有类似的东西"DatabaseProjects.Targets",它将具有基本的MSBuild标头标签,然后是你的属性组.
然后在项目A和项目B中,在配置定义之后,使用import元素导入目标文件,例如<Import Project="DatabaseProjects.Targets" />
这样,该属性将不在任何单个项目中,而是在共享的"目标导入"中.
为了增加可见性,您可以将目标文件作为链接的"无"/"不要复制"文件添加到项目中.
| 归档时间: |
|
| 查看次数: |
1897 次 |
| 最近记录: |