大内中如何设定指定程序集的隐式链接路径

网易杭州 卢立祎

  我们现在手头进行的项目是一个使用大内(.net)作 UI 的编辑器,并且使用了插件这样的组织结构。使用的编程语言是 Managed C++ ,因为这样就可以很好的与引擎(C++)整合在一起。所有的插件都由于载入插件是使用显式链接,因此可以放在 bin\stdplugs 目录下。

  但是,当一个插件需要引用另一个插件的符号时,问题出现了,大内的默认程序集的搜索路径是这样的:

[application base] / [assembly name].dll
[application base] / [assembly name] / [assembly name].dll

虽然可以通过指定引用的程序集的区域性信息来搜索:

[application base] / [culture] / [assembly name].dll
[application base] / [culture] / [assembly name] / [assembly name].dll

但是需要设置配置文件中的<codeBase> 段来指定,增加了复杂度。

这里,我们使用了AppDomain(应用程序域)来解决这个问题。

AppDomain::CurrentDomain->AppendPrivatePath(S"stdplugs");