C# ASP.NET应用程序对以编程方式加载的程序集中的程序集的引用
我的ASP.NET应用程序加载程序集并从其中的对象创建类实例。程序集本身有一个对称为“Aspose.Cells.dll”的dll的引用,它可以毫无问题地访问该dll,并且与程序集文件本身位于同一路径上。但是,当我对其中一个方法进行方法调用时,会出现以下错误: 无法加载文件或程序集“Aspose.Cells,版本=4.1.2.0,区域性=中性,PublicKeyToken=9a40d5a4b59e5256”或其依赖项之一 我想我需要让我的ASP.NET应用程序也引用这个DLL,但到目前为止我尝试的一切都失败了。加载的程序集DLL不在web应用程序的根目录中,我希望它不必位于根目录中 我可以这样加载程序集:C# ASP.NET应用程序对以编程方式加载的程序集中的程序集的引用,c#,assemblies,C#,Assemblies,我的ASP.NET应用程序加载程序集并从其中的对象创建类实例。程序集本身有一个对称为“Aspose.Cells.dll”的dll的引用,它可以毫无问题地访问该dll,并且与程序集文件本身位于同一路径上。但是,当我对其中一个方法进行方法调用时,会出现以下错误: 无法加载文件或程序集“Aspose.Cells,版本=4.1.2.0,区域性=中性,PublicKeyToken=9a40d5a4b59e5256”或其依赖项之一 我想我需要让我的ASP.NET应用程序也引用这个DLL,但到目前为止我尝试的
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"));
但我不能这样使用它:
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
事件似乎很有趣,我稍后会尝试一下。您可以将依赖程序集复制到Bin文件夹中,或将其安装到GAC中 我想您可以在部分中向web.config添加程序集引用,如下所示:
<compilation debug="true">
<assemblies>
<add assembly="Aspose.Cells, Version=4.1.2.0, Culture=neutral, PublicKeyToken=9a40d5a4b59e5256"/>
</assemblies>
</compilation>
我不能完全确定这是否可行,它可能需要在下的节点中对应的web.config条目。有几种方法可以做到这一点。Microsoft知识库文章中介绍了一种方法 "". 它提供了一个非常好的逐步实现方法