2009年1月16日星期五

.NET Application Settings for Class Library


在.NET开发中,我们经常会在Project Settings中创建一些字符串,用于存储application/user scope的变量。现在有这样一个应用场景:
  • project A 是 Data Access Layer, 生成A.dll
  • project B 是 Web Project,调用A.dll进行数据库操作。
  • A.dll中,从Project的Settings中创建的DBConn字符串中获取DB Connection String.
这时,问题出现了:当运行project B时,当进行数据库连接时,所要读取的是project A的project settings中的DBConn呢,还是project B中的DBConn?

其实这个问题应该追踪其本源,那就是Project Settings中的字符串都存放在何处了。

在msdn上:http://msdn.microsoft.com/en-us/library/a65txexh(VS.80).aspx 有关于 Application Settings的介绍,解释的比较全面。我简单总结一下:
  1. Application Settings用于存放两种变量:全局的和用户的。全局的变量是用户无权更改的;而用户变量可以在程序运行时进行更改及储存。
  2. 所有的变量和值存放于app.config这样一个xml文件中。具体位置应该就在Application所在目录。
但现在有问题了,假如我的是一个Class Library,那这个app.config存放于哪里?如果其它application引用了这个DLL,读取的是其它application所对应的app.config还是引用的DLL自带的app.config呢?

还是在http://msdn.microsoft.com/en-us/library/a65txexh(VS.80).aspx这篇文章中,我找到了一段注释,大概的意思就是:除了Visual Studio Tools for Office DLL project,其它的Class Library Project不配有application settings. 有点迷惑了。

TBC

没有评论:

发表评论