如何分离配置文件?

时间:2009-10-29 21:58:44

标签: c# .net database configuration app-config

我有一个.net解决方案,有这样的参考层次结构 MyWinApp-> ServerCore->数据访问 最后两个是类库,myWinApp是一个Windows应用程序。

现在,每次我想在不同的服务器上运行这个项目时,我都需要重建项目,因为我无法分离具有连接字符串相关配置的DataAccess项目的配置文件(app.config)。 p>

如何将数据库配置与应用程序代码分开?我尝试构建操作选项,但它不起作用:S什么是最可行的解决方案?

提前致谢

3 个答案:

答案 0 :(得分:2)

配置应该很可能与MyWinApp项目一起使用。配置文件与正在执行的内容一起使用。因此,如果您为应用程序创建安装程序,它将具有一个名为MyWinApp.exe.config的配置文件,该文件是从App.Config创建的。

基本上,使用Datalayer.dll的app.config实际上做的不多。

您可能想要做的是查看configSource属性如何在.net中配置文件:http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx,看看这是否是您正在寻找的。这允许您为每个机器可以更改的连接字符串设置configSource。

我所做的只是在部署之前设置一个简单的xcopy,并且在部署asp.net应用程序之前我有正确的配置设置。如果必须打包安装程序,在构建安装程序之前复制正确的文件也应该可以解决问题。

答案 1 :(得分:1)

对于我的DAL项目,我通常有一个DataLayer.dll.config文件,但实际上我将ConnectionString条目添加到我的Program.exe.config文件中。我不知道你需要什么特别的东西。可能只是从Program.exe中的DataLayer.dll引用静态只读字符串或其他内容?

或者,您真的想要单独的配置文件吗?如果是这样,那么您可以使用ConfigurationManager类使用OpenMappedMachineConfiguration方法打开松散的配置文件。请参阅MSDN参考:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openmappedmachineconfiguration.aspx

答案 2 :(得分:0)

我认为您可以使用applicationSettings来包含特定引用程序集的配置:

例如:

<configuration>
 <applicationSettings>
     <ProjectName.Properties.Settings>
        <setting name="ConnectionString" serializeAs="String">
           <value>YourConnectionStringHere</value>
        </setting>
     </ProjectName.Properties.Settings>
  </applicationSettings>
</configuration>

其中“ProjectName”是您需要配置的引用的名称。每个项目都可以拥有自己的app.config,其中包含上面的applicationSettings条目以及特定于项目本身的值。