У меня есть проект msbuild, который пытается установить глобальный корневой каталог следующим образом:
<PropertyGroup>
<TheRoot>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFile), theroot.txt))</TheRoot>
</PropertyGroup>
Я использую это для получения пользовательских настроек сборки:
<Import Project="$(TheRoot)\build\TheBuild.settings" />
Иногда (я повторяю, иногда ) VS2010 утверждает, что не будет загружать проект, потому что не может найти мои импортированные TheBuild.settings. Путь, который он сообщает, говорит о том, что ему не нужно оценивать свойство до того, как оно выполнит поиск ввода.
MSBuild не имеет такой сложности.
Я должен подчеркнуть, что VS2010 имеет эту проблему только изредка; Есть некоторые условия, когда он обрабатывает это очень хорошо. К сожалению, я не смог определить, что это за условия.
Почему VS не может понять мою собственность?
Редактировать : Если я успешно открываю файл решения, а затем закрываю его, вдруг он работает: этот экземпляр VS может открыть любой из этих проектов. Не знаю, поможет ли это.