2

我正在构建一个类库,我想知道确保某些设置位于 app.config/webconfig 中的最佳方法是什么。

类库需要一个连接字符串和一个应用密钥。

我知道使用 nuget 您可以将设置注入到配置文件中,但我没有使用 nuget,所以想知道是否有人有任何想法,或者我是否必须尝试捕获并查看这些设置是否在配置文件中?

4

3 回答 3

1

您可以选择不同类型的解决方案:

  1. 你可以说,给你所需的信息,是用户的责任。所以您只需确保当用户创建您的对象的实例时,它会为您提供所需的信息。对于类库来说,这是一个不错的选择。你不想告诉谁会使用你的代码,如何管理他的设置。假设他有自己的方式来保存配置——为什么你必须绑定特定的配置类型(System.Configuration)。

  2. 如果您坚持使用 app.config/web.config,您可以只使用一个用于您的程序集,而不使用应用程序主程序。你可以使用ConfigurationManager.OpenExeConfiguration. 要知道您的程序集从哪里运行,请使用Assembly.GetExecutingAssembly().Location. 这样,您可以打开自己的配置文件,并确保在文档中用户必须更新设置。

  3. 您可以告诉他他必须在他的 app.config/web.config 中指定配置信息,如果您要查找的密钥不存在则抛出异常...

于 2012-09-26T18:41:25.197 回答
0

试试这个

http://ninjectconfigurer.codeplex.com/

清楚阅读问题后,上面的链接将不起作用,但以下解决方案可能有效

无效或错误的设置实际上是编译时问题。您可以使用 msbuild 脚本来验证 app.config 文件是否具有强制设置。如果不是,则在编译时应引发错误。

要读取配置文件的内容,请使用 Xmlread msbuild 任务 - 在 MSBuild 任务中读取配置值

要在缺少设置时失败,请使用 Xmlread 任务的错误条件,如下所示(尽管对于不同的任务),并将此任务附加到您的项目文件中,如图所示 -

缺少内容文件时如何使 MSBuild 失败

于 2012-09-26T18:34:24.010 回答
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!");
        }
于 2012-09-26T18:36:40.277 回答