Скрипт msbuild, использующий информацию о решении - PullRequest
4 голосов
/ 05 апреля 2011

У меня есть файл csproj, являющийся частью двух разных решений Visual Studio. Файл проекта должен вести себя немного иначе, в зависимости от решения, из которого он будет использоваться. Что бы мне понадобилось, это что-то пригодное для использования в качестве «Condition» - свойства с именем, например, $ (SolutionName) - заполненного автоматически. По крайней мере, это моя идея. Я не нашел ничего подобного.

Я также подумал, что у меня есть два небольших файла проекта, импортирующих общие части. Я думаю, это предотвратит редактирование всех этих свойств внутри Visual Studio. Изменения будут записываться только в активный «главный файл», верно?

Итак, есть ли другой способ различения на уровне проекта с использованием информации о решении?

1 Ответ

7 голосов
/ 06 апреля 2011

Оказывается, есть свойство с именем в точности $ (SolutionName). Попробуй это; сначала установите переменную среды как:

> set MSBuildEmitSolution=1

Затем создайте файл решения с помощью MSBuild из той же командной строки

> MSBuild My.sln

Вы найдете преобразование проекта MSBuild файла вашего решения, он будет называться My.sln.metaproj .

Просто откройте это в текстовом редакторе, и вы сможете увидеть другие свойства. Изучив цель «Построить» в этом файле проекта, вы увидите, что все эти свойства передаются в задачу MSBuild при сборке ваших проектов, поэтому вы должны иметь возможность различать условия на основе любого из них.

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