我试图在运行时加载程序集。为此,我使用以下行:
System.Reflection.Assembly.Load(file.FullName);
file是一个FileInfo对象,所以file。FullName返回文件系统上文件的完整路径,例如:c:mywebsitedll myassembly.dll
当我尝试执行上面的行时,我得到以下错误:
无法加载文件或程序集'c:mywebsitedll myassembly.dll'或它的一个依赖项。给定的程序集名称或代码库为无效的。(Exception from HRESULT: 0x80131047)
我确信这不是一个依赖问题,我不知道什么是"无效的代码库"
请注意,如果我将程序集直接放在网站的BIN文件夹上,一切都可以正常工作,我只是无法动态加载。
为了补充Schroedingers Cat的答案,您可能需要查看汇编。如果只有文件路径,则使用LoadFile。但是从ASP运行时可能会遇到安全问题。. NET可能需要在文件系统上配置权限,以允许您的网站访问该文件。
这是一个安全/权限问题-如果没有适当的权限(取决于用于运行的帐户),您无法从外部bin加载程序集…
您需要使用"程序集名称的长形式"而不是代码的文件路径:查看此链接
这可能与权限有关,通常asp.net网站不会访问(特别是执行访问)根目录以外的文件
该方法需要程序集名称。你需要的是组装。LoadFrom,虽然你必须小心权限,因为你从asp.net应用程序调用它。
查看这里获得更多信息:如何在c#中调用托管DLL文件?