感谢 MSDN,我找到了解决方案,
默认情况下,当您重建程序集时,它会被分配一个新的版本号。这是因为 Visual Studio .NET 将新项目的 AssemblyVersion 属性设置为“1.0.*”。因此,每次重新构建程序集时,都会为服务的组件生成一个新的类标识符 (CLSID)。
注意 此行为在 C# 和 Visual Basic .NET 项目之间略有不同。对于 C# 项目,程序集版本在每次重建时都会递增。对于 Visual Basic .NET 项目,程序集版本会在项目加载到 Visual Studio .NET 后第一次重建时递增。在同一 Visual Studio .NET 实例中的后续重建不会导致程序集版本增加。
这并不代表问题,因为程序集版本仅用于在没有强名称的程序集中提供信息。对于强命名程序集,您应该使用手动维护的静态版本号。在第 5 章“构建过程”的控制程序集版本中进一步讨论了这个和其他版本控制问题。
为了控制服务组件最终在 COM+ 目录中的 CLSID 并避免开发人员每次重新构建服务组件时出现多个版本,请使用以下方法之一:
1.使用以下 Guid 属性显式控制 CLSID:
[Guid("2136360E-FEBC-475a-95B4-3DDDD586E52A")]
public interface IFoo
{}
[TransactionAttribute(TransactionOption.Required),
Guid("57F01F20-9C0C-4e63-9588-720D5D537E66")]
public class Foo: ServicedComponent, IFoo
{}
2.为服务组件的程序集维护一个静态程序集版本号,不要使用 Visual Studio .NET 默认的“1.0.*”版本编号方案。有关程序集版本控制的更多信息,请参阅第 5 章“构建过程”中的控制程序集版本。
我使用了第一种方法。工作了一个款待。
http://msdn.microsoft.com/en-us/library/ee817675.aspx