【问题标题】:What's the "standard" way to initialise a COM based library初始化基于 COM 的库的“标准”方法是什么
【发布时间】:2009-05-20 09:04:28
【问题描述】:

我一直在研究 .NET 库。当然 .NET 有一种很好的方式来处理配置,因此我可以向图书馆用户记录他们应该在 app.config 中添加的内容。

不过,我还必须将库公开为 COM 对象,以获取旧版支持。该库的一些用户将是 VB6 应用程序,它没有 app.config 概念。

我知道我可以使用 OpenExeConfiguration 以及命名来“捏造”文件,但这会给我带来其他问题。

有没有一种通用的方法来初始化基于 COM 的库?最坏的情况是,我可以公开一个初始化方法,该方法将所有初始化参数作为单独的参数,但我担心这会导致难以添加新的初始化参数,因为它会导致破坏 API 接口。

我想我正在考虑传递诸如键值对数组之类的东西,但在我这样做之前,有没有我没有考虑的“标准”方式?

【问题讨论】:

    标签: c# .net com vb6


    【解决方案1】:

    嗯,请检查您的假设。

    app.config与exe中是否使用VB6无关。 app.exe.config 是一个 .NET 约定。当 .NET 代码加载到 exe 中时,它会在 .config 中查找配置设置。是否使用 VB6 创建 exe 无关紧要。

    例如,如果您在 .NET 中构建 COM 组件,然后将其托管在 dllhost.exe 中,您的 .NET 逻辑将从与 dllhost 位于同一目录中的名为 dllhost.exe.config 的文件中读取其配置。 exe(通常是 %windir%\system32)。 dllhost.exe 二进制文件不知道 .config 文件这一事实无关紧要。

    除此之外,您对 init 使用键/值对的计划很好。它易于使用、灵活、可扩展。您可能想要同时执行配置文件和 Init() 方法,以允许 Init 根据需要覆盖某些内容。在许多情况下,.config 文件只能由管理员访问,并且不可更改。因此,您可能需要某种方式在 .exe.config 之外提供用户可定义的设置。

    另见:How can I debug a VB6 project that has a .NET interop component?

    • 那个问题的回答指出,在调试时,你应该使用 vb6.exe.config 作为你的配置文件,而在运行时你需要 app-name.exe.config 。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2011-01-26
      • 2010-09-17
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多