Можно ли из файла csproj узнать, используется ли для его запуска devenv или msbuild? - PullRequest
0 голосов
/ 14 июля 2009

Мотивация: В процесс сборки интегрирован fxcop, который запускает fxcopcmd.exe при каждом изменении цели или при наличии предупреждений от предыдущего запуска fxcop.

Но когда кто-то работает в студии, devenv.exe часто решает скомпилировать проект в фоновом режиме по тем или иным причинам. Например, когда я добавляю новый проект в решение, я замечаю, что запускается fxcopcmd.exe, что означает, что началась фоновая сборка. Есть и другие времена.

Итак, я хочу подавить fxcop при сборке с помощью devenv. Наш CI-сервер строится с использованием msbuild, поэтому никаких проблем нет.

Кстати, если есть способ отключить фоновые сборки, это может быть здорово.

Ответы [ 2 ]

1 голос
/ 14 июля 2009

Существует свойство BuildingInsideVisualStudio , которое сообщит вам об этом.

Например, сравните результат при использовании msbuild.exe и devenv.exe с .csproj со следующей определенной целью AfterBuild

<Target Name="AfterBuild">
  <Message Text="BuildingInsideVisualStudio: $(BuildingInsideVisualStudio)" Importance="high"/>
</Target>

Сайед Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build

0 голосов
/ 14 июля 2009

Единственное, о чем я могу думать, это либо

  1. создать другой тип сборки (например, debug_and_rules, release_and_rules и т. Д.). Я думаю, что ms build может прочитать это.
  2. пусть ваш CI-сервер вызывает fxcop exe отдельно от сборки проекта. Это то, что я делал до интеграции fxcop в VS.
  3. имеет msbuild установить параметр или флаг компилятора, который может прочитать ms build. Я не уверен, что это сработает.

Фоновый компилятор был добавлен в VS 2008 для C # и, насколько я знаю, не настраивается. VS 2010 должен быть ультраконфигурируемым, так что, возможно, это изменится

Редактировать: отформатировать мой список немного лучше

...