我正在构建一个类库,我想知道确保某些设置在app.config / webconfig中的最佳方法是什么。
类库需要一个连接字符串和一个app键。
我知道使用nuget你可以在设置文件中注入设置但是我没有使用nuget所以想知道是否有人有任何想法,或者我是否只是尝试捕获并查看这些设置是否在配置文件中?
答案 0 :(得分:1)
您可以选择不同类型的解决方案:
您可以说,为您提供所需信息,是用户的责任。因此,您只需确保在用户创建对象实例时,它会为您提供所需的信息。这对于类库来说是非常好的选择。你不想告诉谁将要使用你的代码,如何管理他的设置。假设他有自己的方法来保存配置 - 为什么必须绑定特定的配置类型(System.Configuration)。
如果你坚持使用app.config / web.config,你可以只有一个用于你的程序集,而不是使用应用程序主要的。你可以使用ConfigurationManager.OpenExeConfiguration
。要知道程序集的运行位置,请使用Assembly.GetExecutingAssembly().Location
。这样,您可以打开自己的配置文件,并在文档中确保用户必须更新设置。
您可以告诉他,他必须在app.config / web.config中指定配置信息,如果您要查找的密钥不存在,则抛出异常...
答案 1 :(得分:0)
试试这个
http://ninjectconfigurer.codeplex.com/
在清楚阅读问题之后,上述链接将无效,但以下解决方案可能有效
无效或错误的设置实际上是编译时问题。您可以使用msbuild脚本来验证app.config文件是否具有强制设置。如果没有,那么在编译时应该引发错误。
要读取配置文件的内容,请使用Xmlread msbuild任务 - Read Config Value in MSBuild Task
要丢失设置失败,请使用Xmlread任务的错误条件,如下所示(但是对于不同的任务)并将此任务附加到项目文件中,如图所示 -
答案 2 :(得分:0)
//test settings...
var a = System.Configuration.ConfigurationManager.AppSettings["myAppKey"];
if (a == null)
{
Console.WriteLine("Application key does not exists!");
}
var b = System.Configuration.ConfigurationManager.ConnectionStrings["myConName"];
if (b == null)
{
Console.WriteLine("Connection does not exists!");
}