Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MsBuild任务和属性的范围_C#_.net_Visual Studio_Msbuild - Fatal编程技术网

C# MsBuild任务和属性的范围

C# MsBuild任务和属性的范围,c#,.net,visual-studio,msbuild,C#,.net,Visual Studio,Msbuild,我有一个目标构建的构建项目 <Target Name="Build"> <Message Text="Version : $(FullVersionNr)" /> <MSBuild Projects="@(WebProj)" Properties="WebProjectOutputDir=$(SitePublishPath);OutDir=$(SitePublishPath1);Configuration=$(Configuration)" /&

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

<Target Name="Build">
    <Message Text="Version : $(FullVersionNr)"  />
    <MSBuild Projects="@(WebProj)"  Properties="WebProjectOutputDir=$(SitePublishPath);OutDir=$(SitePublishPath1);Configuration=$(Configuration)" />      
<Message Text="Version  : $(FullVersionNr)"  /> 

在构建过程中,我将$(FullVersionNr)设置为准确的程序集编号,最后不是这个编号

我甚至在另一个文件中声明了$(FullVersionNr)prop

<Import Project="Common.proj"/>

而且它没有出去


这只是从家长到孩子项目的单向沟通,我希望它是双向的

这篇MSDN文章应该为您提供一些如何实现这一点的想法:。更具体地说,这篇博文应该回答您的范围问题:。最后一定要阅读总结

因此,如果您对多个项目进行批处理,则当您第二次访问
$(FullVersionNr)
时,可能本地上下文没有合并回全局上下文,或者一个本地上下文覆盖了另一个(即两个子项目,第一个子项目更新生成,但第二个子项目没有)


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

关于第二个链接和结论-“当目标执行结束时,本地上下文中更新的值会合并回全局上下文。”-在我的情况下,它没有合并回全球context@Krzy,您在
@(WebProj)
列表中是否有多个项目?如果是这样,请将
$(FullVersionNr)
设置为每个版本中唯一且可预测的内容,重新运行构建,并查看最后的值。如果它仍然与原始值相同,则没有合并任何上下文。若它是不同的,那个么你们可以跟踪哪个项目改变了它。它是一个web项目,其余的项目是作为依赖项目构建的。它们都设置了相同的版本号,并且在结束时,该值不会返回到第一个项目,该项目中的行是