2013-03-21 26 views
1

我第一次使用app.config文件,我不确定如何在项目引用和app.config文件的情况下继续。这里是我的项目,我的工作描述:引用不同项目时使用app.config?

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

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

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

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

回答

2

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

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

顺便说一句,改变该凸出名称;)

+0

我尝试匿名什么我张贴在这个网站:) – sooprise 2013-03-21 14:54:39

+1

当然,你是对的。我刚才是开玩笑的。成功加载配置? – Custodio 2013-03-21 14:55:58

+0

是的,我能够得到代码工作,但现在有人发布了不同类型的解决方案。 – sooprise 2013-03-21 15:01:13

0

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

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

0

最好的选择,你会加载PROJECT1在运行时内Project2的confing。 我会做什么是放置配置字符串(或自定义配置部分,如果需要)在Project2 confing内。这个设置基本上只是告诉应用程序在哪里看Project1配置。

一旦confing路径就可以加载它:

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将完成这项工作。

+0

所以这会导致两个不同的配置文件?我开始认为把它全部放在一个配置文件中会让使用它们的人更容易... – sooprise 2013-03-21 15:02:26

+0

是的,如果你不想在它们之间重复设置,这个解决方案适用于多个配置文件。 – 2013-03-21 15:05:00

+0

我发现在我的项目中很简单,只为测试项目提供了不同的配置文件。 其余部分集中在启动项目的app.config中。如果你有这么多的配置可能会迁移到数据库是一个选项,但是那是另一个历史。 – Custodio 2013-03-21 15:09:05

0

如果使用默认Properties.Settings(的app.config之间的差异,并设置解释here),你有Project2中引用PROJECT1,那么你可以做这样的:

// in Project2: 
    string connectionstring = NamespaceOfProject1.Properties.Settings.Default.Project1ConnString; 
相关问题