有人能告诉我如何在VS2010中使用二进制兼容性吗?
我有一个项目,我使用新的程序集文件构建,新版本更改了DLL的CLSID。
我已经在我的WiX软件包中使用硬编码的CLSID将该dll注册为com +,但如果要在每次构建时更改,则意味着我应该使用evey新版本更新我的WiX软件包。
任何想法?
编辑1
我应该提一下,这个CLSID是你的应用程序ID旁边出现在你在newley注册的Com +组件服务的属性窗口中的那个。我必须将它们硬编码到WiX文件中,以便在安装时注册
编辑2
以下是与我要求提供更多信息相关的其他问题的链接 WiX - Register ComPlus application and Assigning a role to a component
答案 0 :(得分:1)
我已经找到了解决方案,感谢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章“构建过程”中的“控制程序集版本”。
我使用了第一种方法。做了一个款待。