2013-02-14 80 views
45

我试图从我的App.config中分离出我的连接字符串,并且因为您不能像Web.config那样进行转换,所以我想我可以使用configSource属性指向另一个配置文件中连接字符串,但它似乎并没有工作。connectionStrings在App.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

_什么不工作?有什么症状?你发布的内容适合我。 '.config'文件是否在同一个目录中? – Oded 2013-02-14 10:58:01

+0

我正在使用的类使用'DbContext',它接受连接字符串参数,所以我传递给那个DefaultConnection。它在connection.tring在App.config中定义但不在单独文件中时起作用。 – 2013-02-14 10:59:50

+1

确保两个文件都保存在同一个目录中(或者'configSource'中的相对路径是正确的)。 – Oded 2013-02-14 11:00:35

回答

116

如果您自己添加了文件,生成操作(在文件属性中)可能没有正确设置。

Copy to Output Directory选项必须Copy if newerCopy Always,以确保.config文件中bin目录结束,否则就不会在那里,并试图加载配置将失败。

+2

完美工作。谢啦! – 2013-02-14 11:38:24

+4

完全忘了这一点。谢谢一堆:) – 2013-04-17 16:54:51

+10

注意:因此,在一些网络应用程序中,您将太引用添加到:configSource =“bin \ connections.config”,而不是configSource =“connections.config” – piotrwest 2015-10-28 12:45:45

1

我有同样的问题,Oded解决方案适用于我。但我只是精确,要找出如何更改文件“复制到输出目录选项”是“副本,如果新的或始终复制”,你必须

  • 分辩点击文件
  • 选择性能
  • 去推进
  • 然后就会看到复制到输出目录和复制的choise如果更新或总是

这帮助了我,我希望它会帮助你太

复制210
相关问题