我对.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版本为我的应用程序创建部署包?