В MSBUILD, как вы можете указать условие, которое проверяет, запускает ли это командная строка или VS? - PullRequest
13 голосов
/ 07 марта 2012

У меня есть csproj, который я хотел бы вызвать открытие определенного файла в Visual Studio, только если цель была выполнена из Visual Studio, но не из командной строки MSBUILD.Как мне это сделать?

Ответы [ 3 ]

34 голосов
/ 07 марта 2012

Цитата из Страница MSDN :

При сборке внутри Visual Studio для свойства $ (BuildingInsideVisualStudio) устанавливается значение true. Это может быть использовано в вашем проекте или в файлах .targets, чтобы сборка работала иначе.

Пример, как его можно использовать в вашем файле. * Proj или .targets:

<PropertyGroup>
  <MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty>
  <MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty>
</PropertyGroup>
2 голосов
/ 07 марта 2012

Добавьте свойство в файл проекта .csproj, например:

<PropertyGroup>
    <FromMSBuild>false</FromMSBuild>
</PropertyGroup>

Затем в задачу, которую вы хотите запустить, поместите условие, которое оценивает это свойство.Например, если вы хотите открывать notepad.exe всякий раз, когда сборка выполняется из командной строки, а НЕ из Visual Studio:

  <Target Name="BeforeBuild">
<Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" />
  </Target>

Конечно, это зависит от правильной установки свойства $ (FromMSBuild), когда вызапустить сборку через командную строку, вот так:

MSBuild myProject.csproj /p:FromMSBuild=true
0 голосов
/ 07 марта 2012

Если я правильно вас понимаю, вы хотите открыть файл при сборке в visual studio, а не из командной строки с MSBuild?

В этом случае укажите PreBuild или PostBuild в Visual Studio.

  1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства
  2. Выберите вкладку События
  3. Добавьте событие Pre или Post Build, чтобы открыть нужный файл
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...