【问题标题】:Latest Autofac version Doesn't support .Net Framework 4.6.2最新 Autofac 版本不支持 .Net Framework 4.6.2
【发布时间】:2020-06-09 15:13:47
【问题描述】:

我的项目是一个跨平台项目。其中包含 3 个项目 2 .Net-standard 2.0 和一个带有 .Net-framework 4.6.2 的启动项目。

最新的 Autofac 版本(5.2.0)不支持 .NetFramework 4.6.2。

我遇到了错误

autofac.dll 中的 autofac.core.registration.componentnotregisteredexception'" builder.Build() 无法实例化类对象。

错误信息:

Autofac.dll 中出现“Autofac.Core.Registration.ComponentNotRegisteredException”类型的异常,但未在用户代码中处理 附加信息:请求的服务“ShipPageObjects.PageObjects.Login.LoginResolvePage”尚未注册。 为避免此异常,请注册一个组件以提供 服务,使用 IsRegistered() 检查服务注册, 或使用 ResolveOptional() 方法来解决可选依赖项。

var builder = new ContainerBuilder();
builder.RegisterModule(new ContainerConfig());
builder.RegisterInstance(testConfig).As<ITestConfig>();
builder.RegisterModule(new ShipmentmentTest(testConfig));
builder.RegisterModule(new MaterialTest(testConfig));

Container = builder.Build();

【问题讨论】:

  • 你能发布整个异常堆栈跟踪吗?通常 Autofac 会为您提供导致问题的类。
  • Autofac 5.2.0 nuget 包中有一个 .NET 4.6.1 二进制文件,所以应该支持。
  • @Corv1nus 我已经发布了整个异常堆栈跟踪。
  • @Rup 正如我所看到的其他文章,这就是我尝试这种方法的原因。但是遇到错误。
  • 错误信息会告诉您究竟出了什么问题以及如何修复它。我不确定您是如何得出这是一个框架兼容性问题的结论。遵循异常消息的建议,这就是它的用途。

标签: c# .net autofac .net-framework-version


【解决方案1】:

这不是 Autofac 5.2.0 和 .NET Framework 4.6.2 的错误。在异常中,它告诉您 ShipPageObjects.PageObjects.Login.LoginResolvePage 未注册。您很可能将其注入到您已注册但尚未注册 LoginResolvePage 的内容中。

Autofac 非常擅长告诉您在这些情况下出现了什么问题。您可以一个接一个地检查异常并添加,因为它会告诉您需要添加什么,或者追溯您的注入并确保所有内容都已注册。我建议做后者并使用前者来完成它。

【讨论】:

  • 是的,你是对的,每当你遇到 builder.Build() 时,它都会实例化类对象。虽然调试它不通过构造函数意味着它没有注册对象。由于这个原因,我怀疑。我在 .Net 核心中实施的相同方法工作正常。
  • Autofac 正在工作,当我尝试解决 .netstandards 中的 chromedriver 时,我收到此错误。谢谢
猜你喜欢
  • 2017-04-06
  • 2020-04-04
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多