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>
Я ищу простейшие решения.
Любые идеи?
Ответы
Ответ 1
Если вы добавили файл самостоятельно, действие сборки (в свойствах файла) может быть неправильно установлено.
Параметр Copy to Output Directory
должен быть Copy if newer
или Copy Always
, чтобы гарантировать, что файл .config
окажется в каталоге bin
, иначе его там не будет, и попытка загрузки конфигурации завершится с ошибкой.
Ответ 2
У меня была такая же проблема, и решение Oded работает для меня. Но я просто уточню, что для того, чтобы узнать, как изменить файл "Копировать в каталог вывода", чтобы он "копировался, если новый или копировать всегда", вы должны
- rigth щелкните по файлу
- выберите свойства
- перейти на продвижение
- то увидит копию в выходной каталог и выберет копию, если она более новая или скопирована всегда
Это помогло мне, надеюсь, это тоже поможет.