Несколько файлов конфигурации для консольных приложений - PullRequest
4 голосов
/ 10 января 2011

Уже есть похожая тема , но она не отвечает на мой вопрос.

При разработке веб-приложений в Visual Studio 2010 у вас может быть несколько файлов конфигурации.У вас есть Web.config по умолчанию, а затем вы можете иметь Web.Debug.config и Web.Release.config.

Теперь давайте создадим консольное приложение C # и назовем его Foo.Файл конфигурации по умолчанию должен быть Foo.exe.Config.Можем ли мы переопределить этот файл конфигурации для разных сред?Как мы должны это назвать?Foo.exe.Release.config или Foo.Release.exe.config?

Ответы [ 3 ]

4 голосов
/ 10 января 2011

Проверьте этот пост: http://www.olegsych.com/2010/12/config-file-transformation/ Показать, как использовать различные конфигурации для разных сред.

3 голосов
/ 10 января 2011

В VS2010 нет встроенной поддержки для этого, но вы можете проверить этот блог: http://vishaljoshi.blogspot.com/2010/05/applying-xdt-magic-to-appconfig.html

2 голосов
/ 11 декабря 2015

Этот пост объясняет в 8 шагов, как это сделать: https://mitasoft.wordpress.com/2011/09/28/multipleappconfig/

Это решило проблему для меня.

Обновление: я добавляю ниже шаги в случае, если статья удалена (thx @ A.V :))

  1. Подготовьте проект и добавьте app.config , app.debug.config и app.release.config . Убедитесь, что работает под .Net 4.0 .

  2. Щелкните правой кнопкой мыши проект, выберите «Выгрузить проект», а затем «Редактировать» .csproj.

  3. Ниже последнего PropertyGroup добавить следующее:

<PropertyGroup>
  <ProjectConfigFileName>App.config</ProjectConfigFileName>
</PropertyGroup>
  1. Изменить раздел ItemGroup , который связан с app.config / app. *. Config files
<ItemGroup>
   <None Include="App.config" />
   <None Include="App.Debug.config">
     <DependentUpon>App.config</DependentUpon>
   </None>
   <None Include="App.Release.config">
     <DependentUpon>App.config</DependentUpon>
   </None>
 </ItemGroup>
  1. Под последним тегом импорта вставьте этот

<Импорт Проект = "$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets" />

  1. Прямо перед окончанием тега Project добавьте
<Target Name="AfterBuild">
  <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)"

Destination = "@ (AppConfigWithTargetPath -> '$ (OutDir)% (TargetPath)')" />

  1. Теперь вы можете сохранить проект, щелкнуть правой кнопкой мыши по проекту и выбрать Обновить проект.

  2. Для файлов app.debug.config / app.release.config вы можете использовать шаблон, предоставленный для веб-проектов, который выглядит следующим образом

<?xml version="1.0"?>

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

  <appSettings>
    <add key="Mode" value="Debug" xdt:Transform="Insert"/>
  </appSettings>
  <!--
    In the example below, the "SetAttributes" transform will change the value of 
    "connectionString" to use "ReleaseSQLServer" only when the "Match" locator 
    finds an atrribute "name" that has a value of "MyDB".

    <connectionStrings>
      <add name="MyDB" 
        connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    </connectionStrings>
  -->
  <system.web>
    <!--
      In the example below, the "Replace" transform will replace the entire 
      <customErrors> section of your web.config file.
      Note that because there is only one customErrors section under the 
      <system.web> node, there is no need to use the "xdt:Locator" attribute.

      <customErrors defaultRedirect="GenericError.htm"
        mode="RemoteOnly" xdt:Transform="Replace">
        <error statusCode="500" redirect="InternalError.htm"/>
      </customErrors>
    -->
  </system.web>
</configuration>
...