Почему VS2010 не оценивает свойства моего проекта? - PullRequest
1 голос
/ 15 апреля 2011

У меня есть проект msbuild, который пытается установить глобальный корневой каталог следующим образом:

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

Я использую это для получения пользовательских настроек сборки:

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

Иногда (я повторяю, иногда ) VS2010 утверждает, что не будет загружать проект, потому что не может найти мои импортированные TheBuild.settings. Путь, который он сообщает, говорит о том, что ему не нужно оценивать свойство до того, как оно выполнит поиск ввода.

MSBuild не имеет такой сложности.

Я должен подчеркнуть, что VS2010 имеет эту проблему только изредка; Есть некоторые условия, когда он обрабатывает это очень хорошо. К сожалению, я не смог определить, что это за условия.

Почему VS не может понять мою собственность?

Редактировать : Если я успешно открываю файл решения, а затем закрываю его, вдруг он работает: этот экземпляр VS может открыть любой из этих проектов. Не знаю, поможет ли это.

1 Ответ

1 голос
/ 15 апреля 2011

Я сделал то же самое с довольно сложной сборкой, и она никогда не подводила. Единственное различие между вашим и моим заключается в том, что я использую $ (MSBuildThisFileDirectory), и используемый мной «sentinal» файл - это тот же файл, который будет импортирован, в вашем случае «TheBuild.settings» вместо «theroot». txt "хотя я не понимаю, как это будет иметь значение.

Вы замечаете это вообще при редактировании файлов, когда решение открыто? Ваше объявление $ (TheRoot) в файле проекта или в импортированном файле? Это может иметь значение, поскольку среда IDE будет кэшировать импортированные файлы свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...