我有一个msbuild项目,试图建立一个全局根目录,因此:
<PropertyGroup>
<TheRoot>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFile), theroot.txt))</TheRoot>
</PropertyGroup>
我用它来获取自定义构建设置:
<Import Project="$(TheRoot)\build\TheBuild.settings" />
有时(我重复一遍,有时)VS2010声称它不会加载项目,因为它无法找到我导入的TheBuild.settings。它报告的路径表明,在查找输入之前,不需要考虑该属性。
MSBuild没有这样的困难。
我必须强调VS2010偶尔会出现这个问题;有一些条件,它处理它就好了。可悲的是,我无法确定这些条件是什么。
为什么VS不能理解我的财产?
编辑:如果我成功打开解决方案文件,然后关闭它,突然就可以了:VS的实例可以打开任何这些项目。不知道这是否有帮助。
答案 0 :(得分:1)
我用相当复杂的构建完成了同样的事情并且它从未失败过。你和我之间的唯一区别是我正在使用$(MSBuildThisFileDirectory),而我正在使用的“sentinal”文件是将导入的同一文件,在你的情况下是“TheBuild.settings”而不是“theroot”。 txt“虽然我不知道这有多重要。
在解决方案打开时编辑文件时,您是否注意到了这一点?你在项目文件或导入文件中声明$(TheRoot)吗?这可能会有所不同,因为IDE将缓存导入的属性文件。