在自定义模块中包含 Autofac.Module 中断 Orchard

Including Autofac.Module in custom module breaks Orchard

请参阅 here & here 了解我尝试这样做的原因。

我有一个正在构建的自定义模块(它是 Orchard .sln 中自己的 .csproj,正常情况下)

我有一个(相对复杂的)依赖项,我希望将其注入到 Orchard 中。 目前,如果我构建并 运行 代码,它会非常高兴,直到它达到我的依赖性,此时它为 null-refs(正如我所期望的那样)。我可以访问管理站点和任何不引用依赖项的页面。

我将对 Autofac 的引用添加到我的项目中。 -> 一切正常。

我添加以下内容class:

using System;
using Autofac;

namespace MyCustom.Module.Namespace
{
  public class LoaderModule
  {}
}

一切都很好 - 我重建并仍然得到预期的行为。 然后我按照其他地方的指示使 LoaderModuleAutofac.Module 派生:

using System;
using Autofac;

namespace MyCustom.Module.Namespace
{
  public class LoaderModule : Autofac.Module
  {}
}

然后我突然从 IIS 收到整个 Orchard 站点的 "The resource cannot be found." 404s - 包括管理站点和内容页面,它们没有达到依赖关系。

求助!?

呸!这是一个版本控制问题。

在附加调试器的情况下启动站点,并中断所有异常显示如下:

{"Could not load file or assembly 'Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"Autofac, Version=3.3.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da"}

我从 nuget 添加了 Autofac,但 Orchard 本身使用的是不同的捆绑版本。 删除我对 Autofac 的 nuget 引用并通过找到 Autofac.dll 的捆绑副本重新添加使问题消失。