在引用不同的项目时使用app.config?

时间:2013-03-21 14:44:31

标签: c# app-config

我第一次使用app.config文件,并且不确定如何在项目引用和app.config文件的情况下继续。以下是我正在使用的项目的描述:

Project1 (进程记录器)填充Project1 app.config文件中指定的数据库中的日志表。

Project2 (计算器)运行计算并填充Project2 app.config文件中指定的数据库中的表。使用对Project1的引用记录日志。

当我在Project2中引用Project1时,在我的“Release”文件夹中,我没有看到Project1的app.config文件。处理这种情况的最佳方法是什么?我不应该在Project1中的app.config文件中配置数据库,而应该将它作为Project2的参数来指定(Project2.LogConnectionString作为参数发送到Project1中的函数)?或者有没有办法让app.config文件出现在我的“Release”文件夹中?

任何帮助都会受到赞赏,我不知道这样做的正确方法是什么。谢谢!

4 个答案:

答案 0 :(得分:2)

配置文件基于启动项目。 这意味着当您从proj2中的proj1实例化某些内容时(proj1将是proj2中的引用),您可以使用proj2中的app.config。

基本上,您可以将所有配置存储在proj2中并根据需要使用。

顺便说一句,更改项目名称;)

答案 1 :(得分:0)

最好的选择是在运行时加载Project2内部的Project2。 我要做的是在Project2 confing中放置配置字符串(或者如果需要,可以使用自定义配置部分)。此设置基本上只是告诉应用程序在哪里查看Project1配置。

一旦你有了混淆路径,就可以这样加载它:

    System.Configuration.ExeConfigurationFileMap configFile = new System.Configuration.ExeConfigurationFileMap();
    configFile.ExeConfigFilename = "my_file.config";
    config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(configFile, System.Configuration.ConfigurationUserLevel.None);
    settings = config.AppSettings.Settings;

在这种情况下,我正在从Project1访问AppSettings。

关于我提到的自定义配置,请参阅我的一个帖子,如果您需要更复杂的设置,这个Custom configuration section将完成这项工作。

答案 2 :(得分:0)

如果你使用默认的Properties.Settings(app.config和解释here之间的设置之间的区别),你在Project2中引用了Project1,那么你可以这样做:

// in Project2: 
    string connectionstring = NamespaceOfProject1.Properties.Settings.Default.Project1ConnString;

答案 3 :(得分:-1)

.NET应用程序有一个配置文件。它通常具有可执行文件的名称。 .NET不支持每个程序集的配置文件。

您应该将连接字符串从可执行文件传递到记录器项目。