我有一个带有目标构建的构建项目
<Target Name="Build">
<Message Text="Version : $(FullVersionNr)" />
<MSBuild Projects="@(WebProj)" Properties="WebProjectOutputDir=$(SitePublishPath);OutDir=$(SitePublishPath1);Configuration=$(Configuration)" />
<Message Text="Version : $(FullVersionNr)" />
在构建过程中,我将$(FullVersionNr)设置为精确的装配编号,最后不是这个
我甚至在另一个文件
中声明了$(FullVersionNr)道具<Import Project="Common.proj"/>
并且它没有出来。
这只是从父项目到子项目的单向沟通,我希望它是双向的
答案 0 :(得分:2)
这篇MSDN文章应该为您提供一些如何实现这一目标的想法:MSBuild Properties。更具体地说,此博客文章应该回答您的范围问题:Scope of properties and item in an MSBuild script。请务必阅读最后的摘要。
因此,如果您正在对多个项目进行批处理,则当您第二次访问$(FullVersionNr)
时,本地上下文可能尚未合并回全局上下文,或者一个本地上下文已覆盖另一个本地上下文(即两个子项目,第一个更新构建,但第二个不更新)。
一种可能的解决方案是使用MSDN文章中描述的注册表属性,并仅在更新其值时编写该属性。