c# - 每次升级从我的 dotNet 应用程序使用的 COM 库时,我是否需要重建和重新部署?

标签 c# .net com interop

我有一个使用 COM 组件的 C# .net 2.0 Windows 应用程序。当我添加对此 COM 库的引用时,Visual Studio 2005 会自动添加一个互操作程序集 DLL。

如果 COM 组件经常升级,我需要做些什么才能使我的应用程序也保持升级?我需要升级互操作 DLL 吗?我是否需要每次都重建和重新部署才能跟上 COM 升级的步伐?

我不是 100% 理解这个互操作性问题,我只需要尽量减少每次 COM 升级的工作。我需要避免每次都重建和重新部署。有什么最佳方法可以实现这一目标吗?

我一直在阅读 MSDN 中的高级 COM 互操作性 (http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx),但仍然没有明确的答案。

提前致谢

最佳答案

and can't find any tlb file for the COM in question.

它通常嵌入在 COM 服务器 DLL 中。您可以使用 Visual Studio、"file"+“打开”+"file"查看,然后选择 DLL。您会看到一个 TYPELIB 节点,资源 1 是类型库。

您可以通过从 Visual Studio 命令提示符运行 Oleview.exe 来反编译类型库。 File + View Typelib 并选择 DLL。将右 Pane 的内容复制/粘贴到文本编辑器中并保存。如果此 IDL 中有任何更改,则您必须重建导入库和您的程序。不这样做会导致很难诊断运行时问题,包括访问冲突异常和调用完全错误的方法。

这很难实现自动化,显然您更希望供应商以更好的方式让您了解重大更改。在此服务器上工作的程序员应该清楚这一点的必要性。

关于c# - 每次升级从我的 dotNet 应用程序使用的 COM 库时,我是否需要重建和重新部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15796818/

相关文章:

c# - 同时在 JSON 和 XML 中用于 WCF 的 ResponseFormat?

c# - 如何使用 LINQ 查找 DateTime 的总和

c# - 我如何模拟 Directory.GetFiles?

c++ - 我需要在 C++ REST SDK 的什么地方调用 CoInitialize?

COM 客户端/服务器跨 64/32 位进程

c# - 为什么 Blazor 服务器端应用程序中返回的访问 token 为 null?

c# - Ninject 绑定(bind) 101

c# - 关闭 TCP 套接字 - 调试器关闭连接时有何不同

.net - 您如何从X509Certificate2解析主题备用名称?

.net - 这种情况下需要STA消息循环吗?