COM 并行程序集使用另一个目录中的 dll?



我很确定答案是否定的,只是以防万一:

对于具有适当SxS清单的独立exe,是否可以使用相对路径引用COM DLL或从非当前目录的目录加载它们?

我们在一个网格环境中运行,该环境使用一个公共文件夹作为根来部署各种包(即zip文件)。几个应用程序希望从一个公共位置引用一个公共的COM Api(带有DLL清单)。然而,由于网格环境是沙盒式的,我们不能安装到Windows SxS目录,也不能在带外安装(即不由网格部署)。

我有希望说从加载COM.DLL吗。。\SomeCommonDir\COM.dllC:\Program Files\SomeCommonDir\COM.dll

作为私人集会,一切都很顺利。

这应该可以使用激活上下文。(我假设你可以接受清单等,因为听起来你可以用"标准"的方式让它正常工作…)

这里有一种"核心"的做事方式,或者你可以使用Microsoft.Windows.ActCtx对象。这两者都允许您手动/以编程方式设置激活上下文的客户端清单的位置;客户端清单必须与程序集清单和程序集位于同一文件夹中。

这个SO问题可能对你有用。这里有一个方法的片段…

// Create an activation context
Type actCtxType = System.Type.GetTypeFromProgID("Microsoft.Windows.ActCtx");
dynamic actCtx = System.Activator.CreateInstance(actCtxType);
actCtx.Manifest = @"PathToCOMClient.manifest";
// Create the object you want, using the activation context
dynamic obj = actCtx.CreateObject("COMTestService.COMTestObject");
// Now use it!
var question = obj.GetQuestionFromAnswer(42);

相关内容

  • 没有找到相关文章

最新更新