Сборка TFS с использованием условных символов компиляции (DefineConstants) из файла .csproj - PullRequest
1 голос
/ 08 февраля 2012

У меня есть решение, которое я создаю в сборке TFS 2010.Это решение и его сборка имеют 3 набора конфигураций (Разработка, Интеграция, Релиз).Я установил сборку для сборки всех из них, и она работает в основном нормально.

В этом решении есть проект Silverlight, который устанавливает разные символы условной компиляции в зависимости от того, какая конфигурация создается, потому что у него разные веб-сайты.URL-адреса служб для каждой конфигурации, например:

    private const string STR_WS_EndPoint =
#if INTEGRATION
        "Integration_WS_EndPoint";
#elif DEVELOPMENT
        "Development_WS_EndPoint";
#elif DEBUG
        "Debug_WS_EndPoint";
#else
        "Release_WS_EndPoint";
#endif

Когда я собираю эти различные конфигурации в Visual Studio, он выбирает правильную строку для каждой конфигурации, но когда TFS создает другую конфигурацию, все они заканчиваютсястрока "Release_WS_EndPoint" (я проверял, используя ILSpy), т.е. ни один из условных символов не был активен.Как мне получить сборку TFS, чтобы подобрать эти символы компиляции?Я не могу использовать поле «MSBuild Arguments» в сборке для этого, потому что, как я уже сказал, он собирает все различные конфигурации, поэтому мне нужно использовать символы компиляции .csproj, как это делает Visual Studio.

1 Ответ

0 голосов
/ 08 февраля 2012

Я использую XmlPreprocess tool для манипулирования файлами конфигурации в зависимости от конфигурации сборки.Он использует один файл сопоставления для нескольких сред / серверов.Вы можете редактировать файл сопоставления в Excel.Он очень прост в использовании.Вызовите XmlPreprocess на этапе после сборки и передайте конфигурацию в качестве параметра среды.

...