我正在構建一個ASP.NET MVC5 web應用程序,使用Ninject.MVC5的DI。我試圖將NinjectWebCommon類移入單獨的類庫項目。我可以通過使用下面的代碼成功地做到這一點:錯誤加載模塊'Ninject.Web.Mvc.MvcModule'類型MvcModule
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
// Uncomment to move this file to a separate DLL
kernel.Load("MyWebApp.dll");
kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
在上面的代碼,MyWebApp.dll
是主要的Web應用程序組件的文件名。這工作,但需要我硬編碼的Web應用程序DLL的引用。我的官方文檔中閱讀下列可能可以用來自動加載所有的DLL中已經以這種方式被分離的解決方案:
kernel.Load(AppDomain.CurrentDomain.GetAssemblies());
但是,如果我用這個代碼,而不是硬的編碼的參考,我收到下面的異常(捕獲,並在上面的throw
線重新拋出):
An exception of type 'System.NotSupportedException' occurred in
MyWebApp.Infrastructure.dll and wasn't handled before a managed/native boundary
Additional information: Error loading module 'Ninject.Web.Mvc.MvcModule' of
type MvcModule
任何人都可以提供關於正在發生的事情在這裏,如何防止這種異常的同時避免硬編碼存在的一些信息引用其他程序集?
'AppDomain.CurrentDomain'中只包含已經加載到域組件 - 在一般的情況下,這不是\ bin文件夾中的所有DLL。如果你可以引用'MyWebApp.dll',那麼你可以使用'typeof(SomeClassInsideMyWebApp).Assembly'。 – Lanorkin 2014-10-12 10:34:44