Подтвердить что ты не робот

ConnectionStrings configSource в App.config не работает

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

Это работает, App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=*snip*" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <connectionStrings>
    <add name="DefaultConnection"
      providerName="System.Data.SqlClient"
      connectionString="Server=*snip*" />
  </connectionStrings>
</configuration>

Но это не так, App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=*snip*" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <connectionStrings configSource="connections.config" />      
</configuration>

connections.config:

<connectionStrings>
    <add name="DefaultConnection"
      providerName="System.Data.SqlClient"
      connectionString="*snip*" />
</connectionStrings>

Я ищу простейшие решения.

Любые идеи?

4b9b3361

Ответ 1

Если вы добавили файл самостоятельно, действие сборки (в свойствах файла) может быть неправильно установлено.

Параметр Copy to Output Directory должен быть Copy if newer или Copy Always, чтобы гарантировать, что файл .config окажется в каталоге bin, иначе его там не будет, и попытка загрузки конфигурации завершится с ошибкой.

Ответ 2

У меня была такая же проблема, и решение Oded работает для меня. Но я просто уточню, что для того, чтобы узнать, как изменить файл "Копировать в каталог вывода", чтобы он "копировался, если новый или копировать всегда", вы должны

  • rigth щелкните по файлу
  • выберите свойства
  • перейти на продвижение
  • то увидит копию в выходной каталог и выберет копию, если она более новая или скопирована всегда

Это помогло мне, надеюсь, это тоже поможет.