C # VS.NET 2008 Изменение настроек для конфигурации - PullRequest
3 голосов
/ 03 декабря 2008

Есть ли способ иметь разные настройки приложения для каждой конфигурации сборки?

Я хотел бы иметь возможность пакетной сборки нескольких конфигураций с различными настройками вместо необходимости изменять настройки и собирать, промыть, повторить.

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

Ответы [ 4 ]

1 голос
/ 05 декабря 2008

Я не знаю много об архитектуре appsettings (я никогда не использовал ее), но вы можете определить различные значения для констант, используя немного магии MSBuild.

Создайте два файла .cs, Constants1.cs и Constants2.cs (или назовите их после ваших настроек).

В каждом файле определите класс с именем Constants (или любым другим), но делайте это так, как если бы каждый файл был единственным определением (т. Е. Используйте одно и то же имя класса). Как правило, это должно просто определить поля public static readonly - не делать , а использовать const, так как это может привести к проблемам с частичной сборкой.

Теперь выгрузите файл проекта и отредактируйте его. Найдите записи, которые выглядят так:

    <Compile Include="Constants1.cs" />
    <Compile Include="Constants2.cs" />

и измените их следующим образом:

    <Compile Include="Constants1.cs" Condition="'$(Configuration)'=='Debug'" />
    <Compile Include="Constants2.cs" Condition="'$(Configuration)'=='Release'" />

Наконец сохраните и перезагрузите ваш проект. Теперь только один из файлов будет фактически собран за один раз, в зависимости от конфигурации вашей сборки.

0 голосов
/ 04 декабря 2008

Помимо всего этого, MS обещала добавить эту функцию в VS 2010.

0 голосов
/ 04 декабря 2008

Что вы имеете в виду под «настройками приложения»? Свойство проекта для каждой конфигурации, такой как Debug или Release? Или defirent файл app.conf для каждого из них?

Если сначала, вы можете создать ряд конфигураций с подходящими настройками и использовать Batch Build для их построения по очереди. http://msdn.microsoft.com/en-us/library/169az28z.aspx

или, как сказал Google Ninja, используйте задачу перед сборкой: del Web.config app.config скопировать Web.config.Debug Web.config (создайте несколько файлов конфигурации перед этим)

0 голосов
/ 03 декабря 2008

Вы можете добавить задачу prebuild или postbuild в proj, у вас есть доступ к ConfigurationName оттуда. Было бы довольно легко сделать что-то вроде «copy Web.config.debug Web.config»

...