无法访问其他项目的app.config文件

问题描述:

目前我有2个应用程序,App1和App2。无法访问其他项目的app.config文件

App1有一个app.config文件,用于存储字符串InstallDir。我可以使用Properties.Settings.Default.InstallDir从App1中访问它。这很好,但我需要能够从App2访问这个。

我在VS中将可访问性从Internal更改为Public。当我尝试从App2访问它时,我添加了对App1的引用,并使用using App1;App1.Properties.Settings.Default.InstallDir,但它只是不返回任何内容。它不会抛出异常,它只是返回一个空白字符串。

任何想法不胜感激。

+0

作为评论,为什么不把这些信息放在第三位,这两个应用程序都可以像独立的配置文件或数据库一样访问?你正在讨论的配置类型比通常在app.config中的配置更加不稳定。 – dash 2012-03-01 11:42:44

每个应用程序都有自己的app.config文件,可以从运行时读取配置。您在App2中引用了App1,它允许您访问App1.Properties.Settings.Default.InstallDir变量,但在运行时,由于App2的app.config中没有对应的值,它将返回null。

+0

谢谢。尽管我有些困惑。所以我无法从App2访问App1中的值,但App2的配置文件中没有相同的值? – 2012-03-01 10:40:18

+0

@BaliC,是的,这就是我所说的。 – 2012-03-01 10:50:56

如果要访问一些(我相信)共享2个项目之间配置选项,为在第一个的配置创建包装(比方说,一个static类),并从你的第二个项目中使用它。

+0

谢谢。我需要在应用程序关闭后保留InstallDir的值,这就是我使用配置文件的原因。除非静态类中的变量在应用程序关闭后以某种方式保留下来? – 2012-03-01 10:41:24

+0

@Bali:该APP如何“关闭”?你是否提到一个EXE项目? – Tigran 2012-03-01 10:50:01

+0

是的,我指的是exe项目,所以当应用程序关闭时,我需要保存值,就像我可以将它保存到配置文件中一样,所以当它打开时我可以再次访问它。 – 2012-03-01 11:09:58

你只能写自己的代码来切换读取另一个配置文件,即使你添加应用2作为参考它不会奇迹般地给你访问,读取它作为一个正常的文件,或使用ConfigurationManager.OpenMappedExeConfiguration:http://msdn.microsoft.com/en-us/library/ms134269.aspx

你的应用程序只会载入一个配置文件,如果你想读取另一个文件的值,你需要明确地加载它。

看看Using ConfigurationManager to load config from an arbitrary location对此有所帮助。

+0

目前我的app.config是用exe编译的,所以它不会被编译为一个单独的文件,我认为我将无法使用它,直到它是一个单独的文件? – 2012-03-01 10:47:30