Components
组件
在一个应用程序中的组件将由一个类ID(CLSID)标识。自动建立的CLSID会随着程序集的每个新版本而改变。所以,默认情况下,当你在特性[AssemblyVersion]中为版本号定义了*时,这个ID会随着每次编译而改变。这个默认的行为很有用,因为COM客户端使用这个CLSID来访问组件,并且它必须随着新的程序集一起重新生成。
在组件服务浏览器中刷新组件
如果你创建了一个程序集的新版本,并且又重新注册了一遍,那你必须用组件服务管理工具刷新这些组件;否则这些新版本不会被显示出来。要刷新这个视图,你可以在组件服务浏览器选择My Computer,然后选择Action→Refresh All Components,然后选择应用程序下面的Components,Action →Refresh。
如果你在一个程序集中有多个组件,并且并不是所有组件都需要在每次编译时设定新的CLSID,那你可以通过特性[Guid()]直接设置其CLSID,这个GuidAttribute特性类在System.Runtime.InteropServices命名空间下。你可以用guidgen.exe工具来创建这个特性需要的GUID。
[Guid("49CD1F2F-7A16-4d6e-9D2B-B60E5089CEB2")]
[EventTrackingEnabled]
public class CourseManagement : ServicedComponent,
ICourseManagement
COM客户端也可以使用progid来创建一个组件。progid比CLSID更易于记忆,因为它是一个可读的名字。progid只是获取CLSID的一个中间步骤。在注册表中,所有的progid都直接列在注册表项HKCR下。progid只是映射到CLSID,通过progid的注册表项,你可以找到CLSID。这里面记载的是对应组件的CLSID。而组件更多的信息可以通过CLSID来获取,下面将讨论这些内容。默认生成的progid由包含命名空间的类名组成。
Progid最大的长度
一些COM客户端无法使用长度超过39个字符的progid。如果自动生成的progid的长度超过了39个字符,你必须使用特性[ProgId]手工设定它。






