我有一个.net组件库(dll),我已成功COM包装(使用regasm)。 .net组件需要配置信息。
在.Net世界中,这可以通过app.config轻松解决。我可以对此dll进行特定设置,并将它们添加到web.config或exe.config中,以便在程序或Web上使用dll时,它可以访问必要的配置信息。
所以我的问题是,当通过COM调用时(比如通过ASP页面甚至是VBScript),我可以和我如何使用配置文件?理想情况下,我宁愿不对某些项目进行硬编码。
答案 0 :(得分:2)
答案 1 :(得分:1)
问题在于,默认的COM激活,您的托管组件在默认的AppDomain中运行,该托管从托管.exe继承其配置名称(例如,如果您在cscript.exe中运行,它想要找到cscript。 cscript.exe旁边的exe.config,你不拥有它)。解决此问题的最简单方法是创建一个托管填充程序,用于旋转新的AppDomain,然后在那里加载程序集,指定要在AppDomainSetup对象中使用的XXX.dll.config文件,然后创建并返回该对象。新的AppDomain。这基本上意味着您需要创建一个小的托管工厂对象,以确保.NET已启动并运行,并且已创建新的AppDomain(最好只使用一次 - 如果在同一进程中创建第二个对象,则使用现有域),然后返回托管对象托管在正确的位置。如果您愿意编写一个完全实现COM类工厂的非托管填充程序,那么您可以使该过程完全透明,但这样更先进......
答案 2 :(得分:0)
COM对象的调用者/创建者是否知道配置文件的位置?如在,暴露“负载(路径)”类型函数会做的伎俩,或者你的意思是什么不同?