2011-01-25 2 views
6

У меня довольно сложное решение, содержащее 10 проектов, кроме тестовых проектов. Это сеть распределенных приложений & услуги, которые обмениваются данными с помощью удаленного доступа; поэтому наличие надлежащих ссылочных сборок (& версий) имеет решающее значение. Вот почему я хочу, чтобы все это было скомпилировано и обмолочено в ONE build.Постройте полное решение, но добавьте глобальные условные символы компиляции только для одного проекта.

Одним из приложений является демонстрационный/аналитический инструмент, который выполняет подпроцесс другого - гораздо большего - приложения на основе ввода пользователя и отображает результаты; Таким образом, у инженеров есть инструмент, который поможет настроить их настройки для «больших вычислений». Очевидно, что подпроцесс содержится в другой сборке, и большая часть тэ результатов, представленных инженерами генерируется

#if ENABLE_TRACE_MATCHING 
Trace.WriteLine("Some engineering output"); 
#endif 

Моя проблема заключается в том, что условная компиляция Символы в настройках проекта ограничиваются сборкой этого проекта, и сделать не распространяются по ссылочным сборкам. Как я могу настроить свою сборку таким образом, что все проекты будут построены без ENABLE_TRACE_MATCHING определяется для одной отладки/анализ-приложения проекта, в котором все упомянутые проекты/сборки должны быть скомпилированы с ENABLE_TRACE_MATCHING быть определены

кроме

Я также не могу заменить #if ENABLE_TRACE_MATCHING на #if DEBUG, так как это позволило бы получить много разных результатов, которые наши инженеры не знали бы, как обращаться.

Заранее спасибо.

PS: Если вы думаете, что мой код пахнет, то я согласен. Дополнительно: в основном это не мой код;)

+0

Я забыл упомянуть: Это все C# и .NET 3.5 – user588939

ответ

1

Вам нужно узнать больше о Microsoft Build, который представляет собой готовый инструмент Microsoft .NET, присутствующий в любой установке.

Используя MSBuild, вы можете определить эти «символы» (свойства) и партию команд (целей).

Это вы можете создать сценарий MSBuild, который импортирует цели Visual Studio по умолчанию из всех проектов вашего решения и объявить в скрипте эти свойства («символы»).

Фактически, свойство устанавливать такие символы уже существует: «DefineConstants».

Итак, у вас есть этот скрипт MSBuild, который предоставляет это значение свойства, повторно объявляя его там, поэтому все цели MSBuild будут знать об этих символах.

EDIT: Проверить это другой вопрос тоже: msbuild, defining Conditional Compilation Symbols

Смежные вопросы