我在VS2010和VB.net(互操作)
中创建了一个windows com对象此com对象应该能够使用任何非托管代码应用程序,例如word,Excel或本例中的Access。
创建com对象并使用regasm等可以正常工作。没问题。
然而,INSTANT我创建了一个com对象,它需要连接字符串或app.config文件中的任何其他内容,然后失败。在这种情况下,它恰好是一个Web服务,并且找不到常见的“端点”或app.config文件错误。 (如果它只是一个连接字符串,我只会读取此值 - 但由于Web服务定义,配置文件非常混乱)。
有人建议将.dll和app.config放在SAME目录中作为办公程序,例如excel,然后将配置文件重命名为Excel.exe.config应该有效。
这似乎对我不起作用。
有没有办法让vb.net类(.dll)现在是一个com对象,知道加载+使用.dll的配置文件,而不是一些主应用程序文件?
请注意,在这种情况下,我没有主应用程序配置文件,因为我正在启动非托管应用程序,如word或Excel,并尝试使用我的类对象。
在vb.net中,显然我可以将.dll中的配置文件内容复制到主应用程序配置中,我们将参加比赛。我没有如上所述的托管“主”文件。
那么当在非托管代码中创建对象的实例时,如何让class.dll文件加载class.dll.config文件?
答案 0 :(得分:3)
在类库中使用应用程序设置通常是一种不好的做法,.NET仅支持EXE项目。在[ComVisible] DLL的情况下它不在图表中,您完全无法控制哪个EXE使用您的代码。
它不像它不起作用,将foo.exe.config的副本放在foo.exe客户端目录中工作正常。当您不是唯一一个寻找此解决方案的人时,麻烦就开始了。现在,安装程序开始覆盖彼此的.config文件,当加载项无法识别时,客户会失去大量时间。
这个问题只有一个解决方案:不要使用设置。还有很多其他方法可以为类库提供配置。一个众所周知的位置的.xml文件也可以正常工作。