1

我在 VS2010 和 VB.net (interop) 中创建一个 windows com 对象

此 com 对象应该能够与任何非托管代码应用程序一起使用,例如 word、Excel 或在本例中为 Access。

com 对象的创建和使用 regasm 等工作正常。没问题。

但是,我创建了一个需要连接字符串或来自 app.config 文件的任何其他内容的 com 对象,然后它会失败。在这种情况下,它恰好是一个 Web 服务,并且出现了常见的“端点”或 app.config 文件找不到错误。(如果它只是一个连接字符串,我会简单地读取这个值——但由于 Web 服务定义,配置文件非常混乱)。

有人建议将 .dll 和 app.config 放在与办公程序(如 excel)相同的目录中,然后将配置文件重命名为 Excel.exe.config 应该可以工作。

这似乎对我不起作用。

有没有办法让现在是 com 对象的 vb.net 类 (.dll) 知道加载 + 使用 .dll 的配置文件而不是一些主应用程序文件?

请注意,在这种情况下,我没有主应用程序配置文件,因为我正在启动 Word 或 Excel 等非托管应用程序并尝试使用我的类对象。

在 vb.net 中,显然我可以将 .dll 中的配置文件内容复制到主应用程序配置中,然后我们就可以参加比赛了。如前所述,我没有托管的“主”文件。

那么,当在非托管代码中创建对象实例时,如何让 class.dll 文件加载 class.dll.config 文件?

4

1 回答 1

3

在类库中使用应用程序设置通常是一种不好的做法,.NET 仅支持它们用于 EXE 项目。在 [ComVisible] DLL 的情况下,它不在图表中,您完全无法控制哪个 EXE 使用您的代码。

不是不行,把 foo.exe.config 的副本放在 foo.exe 客户端目录下就可以了。当您不是唯一寻找此解决方案的人时,麻烦就开始了。现在安装程序开始覆盖彼此的 .config 文件,当加载项无法诊断失败时,您的客户会损失大量时间。

这个问题只有一个解决方案:不要使用设置。为类库提供配置的许多其他方法。众所周知的位置中的 .xml 文件也可以正常工作。

于 2013-07-09T10:02:06.297 回答