无法访问其他项目的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
,但它只是不返回任何内容。它不会抛出异常,它只是返回一个空白字符串。
任何想法不胜感激。
每个应用程序都有自己的app.config文件,可以从运行时读取配置。您在App2中引用了App1,它允许您访问App1.Properties.Settings.Default.InstallDir
变量,但在运行时,由于App2的app.config中没有对应的值,它将返回null。
谢谢。尽管我有些困惑。所以我无法从App2访问App1中的值,但App2的配置文件中没有相同的值? – 2012-03-01 10:40:18
@BaliC,是的,这就是我所说的。 – 2012-03-01 10:50:56
如果要访问一些(我相信)共享2个项目之间配置选项,为在第一个的配置创建包装(比方说,一个static
类),并从你的第二个项目中使用它。
谢谢。我需要在应用程序关闭后保留InstallDir的值,这就是我使用配置文件的原因。除非静态类中的变量在应用程序关闭后以某种方式保留下来? – 2012-03-01 10:41:24
@Bali:该APP如何“关闭”?你是否提到一个EXE项目? – Tigran 2012-03-01 10:50:01
是的,我指的是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对此有所帮助。
目前我的app.config是用exe编译的,所以它不会被编译为一个单独的文件,我认为我将无法使用它,直到它是一个单独的文件? – 2012-03-01 10:47:30
作为评论,为什么不把这些信息放在第三位,这两个应用程序都可以像独立的配置文件或数据库一样访问?你正在讨论的配置类型比通常在app.config中的配置更加不稳定。 – dash 2012-03-01 11:42:44