ASP.NET应用程序引用以编程方式加载的程序集中的程

我的ASP.NET应用程序加载一个程序集,并从其中的对象创建一个类实例。 程序集本身引用了一个名为“Aspose.Cells.dll”的dll,它可以毫无问题地访问它,并且与程序集文件本身位于相同的路径上。 但是,当我对其中一个方法进行方法调用时,我收到此错误:

无法加载文件或程序集’Aspose.Cells,Version = 4.1.2.0,Culture = neutral,PublicKeyToken = 9a40d5a4b59e5256’或其依赖项之一。

我想我需要让我的ASP.NET应用程序引用这个DLL,但到目前为止我尝试过的所有内容都失败了。 加载的程序集DLL不在Web应用程序的根目录中,我希望它不一定是。

我可以像这样加载程序集:

Assembly asm = Assembly.LoadFile(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll"); 

但我不能这样使用它:

 AppDomain newDomain = AppDomain.CreateDomain("testAspose"); Assembly asm = newDomain.Load(System.IO.File.ReadAllBytes(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll")); 

有没有更好的方法呢?

更新:

谢谢你的回复。

我忘了提到我无法将程序集复制到bin文件夹或GAC,因为我希望它作为插件系统工作,通过更改配置文件中程序集的路径而不必手动复制文件,可以轻松替换程序集进入主项目。

但是, AssemblyResolve事件似乎很有趣,我稍后会试一试。

有几种方法可以做到这一点。 Microsoft知识库文章“ 如何在运行时加载程序集位于不是应用程序的bin文件夹的文件夹中 ”中介绍了一种方法。 它为如何执行此操作提供了非常好的逐步方法。

您可以将从属程序集复制到Bin文件夹中或将其安装在GAC中。

我想你可以在部分的web.config中添加程序集引用,如下所示:

      

我并不完全确定这会起作用,并且可能需要在下的节点中对web.config进行相应的输入。