传统的COM程序一直都需要Windows注册表的支持,如果卸载时程序没有把对应的注册表项清理干净, 可能会导致下次安装程序时出错, 同时, 如果多个程序共享一个COM Server, 一旦其中的一个程序更新了COM Server, 可能会导致其他程序不能正常运行, 也就是所谓的Dll地狱。
所幸的是, 微软早已意识到这个问题, 自Window XP开始, 微软提供了一种称之为Side-by-Side(WinSxs)的技术, 使得COM终于可以脱离注册表的束缚, 而我们的程序也可以以简单的X-Copy方式部署.
本文讨论如何创建和使用基于.NET的免注册COM Server.
首先,我们需要创建一个基于.NET的COM Server, 以Visual Studio (VS) 2010 + .NET4.0为例:
1. 打开VS, 新建一个Class Library (C#) 工程CSComServer4, 将Class1.cs改名为CSComServer4.cs并加入以下代码
你可以使用VS提供的小工具(Tools->Create GUID)来创建新的Guid.