我正在构建一个自定义模块(在Orchard .sln中它是自己的.csproj,正常情况下)
我有一个(相对复杂的)依赖项,我想注入Orchard。 目前,如果我构建并运行代码,它将非常高兴,直到它达到我的依赖关系,此时它为null-refs(正如我所期望的那样)。我可以访问管理站点和任何不引用依赖项的页面。
我在项目中添加了对Autofac的引用。 - >一切都很好。
我添加以下类:
using System;
using Autofac;
namespace MyCustom.Module.Namespace
{
public class LoaderModule
{}
}
一切都还好 - 我重建并仍然得到预期的行为。
然后我按照其他地方的指示从LoaderModule
推导Autofac.Module
:
using System;
using Autofac;
namespace MyCustom.Module.Namespace
{
public class LoaderModule : Autofac.Module
{}
}
突然间我得到了“资源无法找到”。来自IIS的404s用于整个Orchard站点 - 包括管理站点和内容页面,这些页面没有达到依赖性。
帮助!?
答案 0 :(得分:0)
呸!这是版本问题。
启动附加调试器的站点,并打破所有异常,显示如下内容:
{"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的捆绑副本重新添加使问题消失。