【发布时间】:2010-01-07 21:24:53
【问题描述】:
您好,
我有一个允许用户导入他们创建的库 (.NET DLL) 的应用程序,只要该库符合我给他们的特定准则(使用我的命名空间、使用我的属性装饰方法等)。 )。我将每个用户库复制到内部目录,然后将其加载到自己的应用程序域中(以便用户可以根据需要卸载它)。因此,我有一个限制,你不能加载两个同名的库。
我想消除这个限制,而不是将每个用户库放入我内部目录的唯一子目录中。当我将它复制到我的内部目录时,我尝试重命名用户库。例如,如果用户说要导入 c:\SomeLib.dll,而我检测到我已经加载了一个名为 SomeLib.dll 的库,我将新文件复制到 ...\MyInternalDir\SomeLib2.dll。但是,当我这样做时,我的加载命令:
(ISomeInterface) iSomeLib = someAppDomain.CreateInstanceAndUnwrap(
"SomeLib2",
"SomeNamespace.SomeClassInSomeLib");
抛出异常:
FileLoadException: 无法加载文件 或组装'MyLib2'或其之一 依赖关系。位于的组件的 清单定义不匹配 装配参考。 (例外来自 HRESULT: 0x80131040)
有没有办法告诉 .NET“忽略文件名自编译后已更改的事实”?
【问题讨论】:
标签: .net security assemblies appdomain manifest