【问题标题】:Why can't I get XML autofac configuration to work为什么我不能让 XML autofac 配置工作
【发布时间】:2016-10-19 17:11:29
【问题描述】:

我按照这里的示例http://docs.autofac.org/en/latest/configuration/xml.html,用 XML 代替 json,但无法编译任何东西。我引用了包 Microsoft.Framework.ConfigurationModel.Xml(版本 1.0.0-beta4),并添加了代码:

// Add the configuration to the ConfigurationBuilder.
var config = new ConfigurationBuilder();
config.AddXmlFile("something.xml");

// Register the ConfigurationModule with Autofac.
var module = new ConfigurationModule(config.Build());
var builder = new ContainerBuilder();
builder.RegisterModule(module);

问题在于,扩展方法 AddXmlFile() 采用 IConfigurationSourceRoot 参数,而 ConfigurationBuilder 不是该参数的类型。修修补补我发现 AddXmlFile() 方法似乎只像一个配置对象:

var config = new Microsoft.Framework.ConfigurationModel.Configuration();
config.AddXmlFile(filename);

但是配置类、成员或扩展上没有 Build() 方法。我没看到什么?

【问题讨论】:

    标签: xml configuration autofac


    【解决方案1】:

    文档显示Microsoft.Extensions.Configuration 而不是Microsoft.Framework.Configuration。微软在发布 .NET Core 之前重命名了很多东西,所以看起来你引用了错误的东西。尝试使用所有内容的完整版本,看看是否有更好的运气。

    【讨论】:

    • 好收获。不久前,您只需要 Autofac.Configuration。现在你需要那个加上 8 个其他包。此外,json 配置有效,但 xml 配置无效。这会产生重复键错误:
    • 阅读文档。您缺少 XML 项的序号命名。 autofac.readthedocs.io/en/latest/configuration/xml.html
    • 实际上,文档只讨论了 使用序数,而不是 。从他们的文档中: 无论如何,我之前尝试添加“name”属性,但它仍然不起作用。它让我通过重复键错误直接进入 ArgumentNullException。完全相同的配置在 json 中工作。你看到的就是我所做的一切——包括两个模块。是的。感谢您的帮助。
    • 我编写了文档。我知道他们说什么。问题是,“如何表达序数配置”是如何使用微软配置的问题。文档尝试提供尽可能多的信息,但就像 web.config 一样,如果您不熟悉该系统,这将变得更加困难,并且我们不可能重现其文档的所有可能排列,如适用于我们的架构。然而,严肃地说,JSON 将更容易使用,并且也是他们用来表达配置的标准。最好坚持下去。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多