1

我是第一次使用 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 文件出现在我的“发布”文件夹中?

任何帮助将不胜感激,我不知道这样做的正确方法是什么。谢谢!

4

4 回答 4

3

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

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

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

于 2013-03-21T14:52:26.520 回答
1

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

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

于 2013-03-21T14:49:36.130 回答
0

对您来说最好的选择是在运行时将 Project1 配置加载到 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。

关于我提到的自定义配置,请参阅我的一篇文章,如果您需要更复杂的设置,这个自定义配置部分将完成这项工作。

于 2013-03-21T14:57:41.350 回答
0

如果您使用默认的 Properties.Settings(app.config 和此处解释的设置之间的差异)并且您在 Project2 中引用了 Project1,那么您可以这样做:

// in Project2: 
    string connectionstring = NamespaceOfProject1.Properties.Settings.Default.Project1ConnString;
于 2013-03-21T15:17:53.087 回答