Visual Studio Design / Оценка / Проект-Загрузка MSBuild условие - PullRequest
0 голосов
/ 13 мая 2019

Свойство BuildingInsideVisualStudio MSBuild позволяет записывать условия, основанные на том, происходит ли определенная сборка в Visual Studio:

<MyProp Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">Foo</MyProp>

Однако это свойство не устанавливается во время оценки/ design / project-load, так, например, в ccproj что-то вроде этого не работает:

<Foo Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">2.9</Foo>
<ProductVersion>$(Foo)</ProductVersion>

Есть ли оценка VS / design / project-load BuildingInsideVisualStudio эквивалент?

РЕДАКТИРОВАТЬ Шаги воспроизведения:

  1. В Visual Studio 2017 создайте новый проект Azure Cloud Service.
  2. Закройте решение в VS и откройте ccproj в текстовом редакторе замените строку <ProductVersion>2.9</ProductVersion> (возможно, у вас другая версия) на:

.

<Foo Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">2.9</Foo>
<Foo Condition=" '$(BuildingInsideVisualStudio)' != 'true' ">9.9</Foo>
<ProductVersion>$(Foo)</ProductVersion>
Откройте решение в Visual Studio, вас встретит предупреждение:

Этот проект связан с более новой версией инструментов Microsoft Azure.Вы должны загрузить инструменты и перезагрузить проект, чтобы продолжить.

Другими словами, во время загрузки проекта BuildingInsideVisualStudio оценивается как ложное, и поэтому неподдерживаемый 9.9 ProductVersion был разрешен.

1 Ответ

0 голосов
/ 14 мая 2019

так, например, в ccproj что-то вроде этого не работает:

На самом деле, это хорошо работает на моей стороне, так что я думаю, если место собственности имеет значение. Я пробовал это в любом месте, но это не может воспроизвести ту же проблему.

Согласно вашему not set during evaluation/design/project-load, используете ли вы свойство в качестве условия узла проекта, например:

<Project... Condition="$(BuildingInsideVisualStudio) " ...>
      ...
</Project>

Только в этой ситуации свойство не может работать, поскольку сам узел Project не поддерживает Condition. Мы должны использовать его inside <Project>, как использовать его для PropertyGroup, ItemGroup, Property ...

Есть ли оценка VS / дизайн / загрузка проекта Эквивалент BuildingInsideVisualStudio?

Непонятно о вашем значении, но если вы имеете в виду использование свойства за пределами содержания проекта, как показано ниже, я боюсь, что ответ отрицательный.

<Project Condition="'$(BuildingInsideVisualStudio)' == 'true'">
   content of project if builds in vs
</Project>

<Project Condition="'$(BuildingInsideVisualStudio)' == 'false'">
   content of project if builds not in vs
</Project>

Если я что-то не так понял, пожалуйста, дайте мне знать, можно ожидать более подробную информацию для воспроизведения проблемы:)

Edit:

С подробностями Охада я воспроизвел проблему. На данный момент свойство BuildingInsideVisualStudio работает только при запуске процесса сборки, оно будет установлено в True только тогда, когда оно строит в VS, но не при перезагрузке или открытии в VS, что вызывает проблему.

Однако я понятия не имею, существует ли свойство загрузки проекта, например: LoadingInsideVisualStudio. Ответ может быть отрицательным.

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