使用COM对象的.NET应用程序的部署策略

时间:2009-08-31 17:49:17

标签: .net deployment com interop

我对.NET应用程序的部署策略有疑问。在我的应用程序中,我正在使用DSO(决策支持对象)。它是一个COM DLL文件,用于访问Analysis Services服务器(版本2000)。

我从解决方案中引用了COM,并且Visual Studio(实际上是后面的工具)很好地创建了一个.NET程序集,它包装了对COM对象的访问并使其类在.NET中可用。

包装使用CLSID通过使用Windows注册表将DSO COM类映射到生成的.NET对象(当运行DSO安装程序时,所有公共COM类的CLSID都在那里注册)。

问题在于,当Microsft发布新版本的DSO时,当我安装新版本时,一些(而不是所有CLSID-s)在注册表中都在发生变化,因此生成的.NET程序集的映射会中断,并且应用程序崩溃。

DSO作为整个软件包的一部分重新分发,名为 Backward Compatibility Pack 。当这个包中的某些内容发生变化时,这不一定与DSO有关,一些COM类会收到新的CLSID。令人沮丧的是,因为我的应用程序停止工作,即使新软件包的DSO没有真正改变。他们经常发布这个软件包,最新的软件包安装SQL Server 2008我猜,并且可能会在每个服务包上更新。

如何处理此方案中的部署?我是否真的需要为每个新版本的DSO版本为我的应用程序创建部署包?

1 个答案:

答案 0 :(得分:0)

您可能并不真正需要生成的RCW文件。

似乎后期绑定可以解决您的问题。手动创建包装类可能非常耗时,但这取决于您的使用模式。以下是描述.NET中后期绑定的文档的链接:

link text