为什么VS2010不评估我的项目属性?

时间:2011-04-15 18:33:27

标签: visual-studio-2010 msbuild

我有一个msbuild项目,试图建立一个全局根目录,因此:

<PropertyGroup>
  <TheRoot>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFile), theroot.txt))</TheRoot>
</PropertyGroup>

我用它来获取自定义构建设置:

<Import Project="$(TheRoot)\build\TheBuild.settings" />

有时(我重复一遍,有时)VS2010声称它不会加载项目,因为它无法找到我导入的TheBuild.settings。它报告的路径表明,在查找输入之前,不需要考虑该属性。

MSBuild没有这样的困难。

我必须强调VS2010偶尔会出现这个问题;有一些条件,它处理它就好了。可悲的是,我无法确定这些条件是什么。

为什么VS不能理解我的财产?

编辑:如果我成功打开解决方案文件,然后关闭它,突然就可以了:VS的实例可以打开任何这些项目。不知道这是否有帮助。

1 个答案:

答案 0 :(得分:1)

我用相当复杂的构建完成了同样的事情并且它从未失败过。你和我之间的唯一区别是我正在使用$(MSBuildThisFileDirectory),而我正在使用的“sentinal”文件是将导入的同一文件,在你的情况下是“TheBuild.settings”而不是“theroot”。 txt“虽然我不知道这有多重要。

在解决方案打开时编辑文件时,您是否注意到了这一点?你在项目文件或导入文件中声明$(TheRoot)吗?这可能会有所不同,因为IDE将缓存导入的属性文件。