什么是初始化基于COM的库的“标准”方式

时间:2009-05-20 09:04:29

标签: c# .net com vb6

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

但是,我还要将库作为COM对象公开,以获得遗留支持。该库的一些用户将是VB6应用程序,它没有app.config概念。

我知道我可以使用OpenExeConfiguration“命名”文件以及命名,但这会导致其他问题。

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

我想我正在考虑传递类似于数组键值对的东西,但在我这样做之前,是否有一种我不考虑的“标准”方式?

1 个答案:

答案 0 :(得分:3)

嗯,检查你的假设。

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

例如,如果在.NET中构建COM组件,然后将其托管在dllhost.exe中,则.NET逻辑将从名为dllhost.exe.config的文件中读取其配置,该文件位于与dllhost相同的目录中。 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。