繁体   English   中英

MsBuild任务和属性范围

[英]MsBuild task and scope of properties

我有一个目标构建的构建项目

<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"/>

而且它没有出来。

它只是从父项目到子项目的单向通信,我希望它是双向的

这篇MSDN文章应该为您提供一些如何实现这一目标的想法: MSBuild属性 更具体地说,这篇博文应该回答你的范围问题: MSBuild脚本中的属性和项目的范围 请务必阅读最后的摘要。

因此,如果您正在批处理多个项目,则当您第二次访问$(FullVersionNr)时,本地上下文可能尚未合并回全局上下文,或者一个本地上下文已覆盖另一个(即两个子项)项目,第一次更新构建,但第二次没有)。

一种可能的解决方案是使用MSDN文章中描述的注册表属性,并仅在更新其值时编写该属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM