考虑以下方案
我有2个组件
名为A.dll的程序集位于文件夹Fold_A中
名为B.dll的程序集位于文件夹Fold_B中
A.dll依赖于B.dll而A是COM可见
当我在表演时
regasm A.dll / codebase
它失败了,但是当B复制到fold_a时 - 命令成功
问题是:是否有一些方法可以在不复制装配件的情况下执行(依赖于regasm)?
此问题已经存在问题:Multiple search paths for assemblies not in the GAC when using REGASM & COM
你的帮助非常宝贵 提前致谢
答案 0 :(得分:1)
嗯,是的,当你注册它时会出现问题,但当客户端实际使用你的COM服务器时,这将是一个更大的问题。一个典型的COM客户端将是非托管代码,例如,给它一个.config文件告诉CLR在哪里寻找程序集B是不太实际的。
如果您希望这个适用于没有配置的任何客户端,那么您应该将B放入GAC。这通常是COM服务器的正确位置,当你使用COM时,DLL Hell没什么好乱的。使用Assembly.AssemblyResolve事件可能不太实际,但您可以尝试使用静态类构造函数来注册事件处理程序。除非这些文件夹始终相关,否则硬编码依赖项的路径是有问题的。