C# Microsoft.SqlServer.Replication.ComErrorException;无法将属性更改为";任何CPU“;
正如标题所述,我对C#中的MergeSynchronizationAgent类有问题。当我尝试使用以下调用创建syncAgent时: syncAgent=subscription.SynchronizationAgent 在哪里 subscription=新的MergePullSubscription()C# Microsoft.SqlServer.Replication.ComErrorException;无法将属性更改为";任何CPU“;,c#,mysql,database,sql-server-2008,C#,Mysql,Database,Sql Server 2008,正如标题所述,我对C#中的MergeSynchronizationAgent类有问题。当我尝试使用以下调用创建syncAgent时: syncAgent=subscription.SynchronizationAgent 在哪里 subscription=新的MergePullSubscription() 我收到一个错误,状态为Microsoft.SqlServer.Replication.ComErrorException,“类未注册”。现在,我已经阅读了这个问题的解决方案,最常见的是将我的项
我收到一个错误,状态为Microsoft.SqlServer.Replication.ComErrorException,“类未注册”。现在,我已经阅读了这个问题的解决方案,最常见的是将我的项目平台设置为“任意CPU”。这将修复工具的签出功能,但不幸的是,程序中还有其他查找64位数据库的功能,将项目平台设置为“任何CPU”会破坏此查找功能。此功能比签出功能更加严格,因此我们必须将项目的平台设置为“x86”,并让签出功能解决此问题。我的问题是,在我们的项目平台必须是“x86”的情况下,是否有其他修复此问题的方法?我使用的是Sql Server 2008 R2。我假定您运行的是64位版本的Microsoft Sql Server 2008 64位安装程序包不安装/注册32位ActiveX组件。当您尝试访问SynchronizationAgent属性时,复制管理对象(RMO)程序集将使用这些组件 缺少注册是您收到ComErrorException的原因:您的32位应用程序正在查找具有特定GUID的ActiveX组件,但此GUID仅存在于64位注册表中,而您的应用程序未看到该组件。如果您构建“任意CPU”版本,您的应用程序将以64位运行,因此也将看到64位注册表 解决方法是让32位虚拟机运行并在那里安装32位版本的MicrosoftSQLServer2008。然后,您需要手动将一组特定文件从虚拟机复制到开发环境中,并将这些文件的注册作为应用程序设置的一部分进行集成
您可以从提交到的bug报告中找到解决方法的细节。错误报告的目标是针对32位SQL Server运行的64位应用程序,但情况是相同的。我假定您运行的是64位版本的Microsoft SQL Server 2008 64位安装程序包不安装/注册32位ActiveX组件。当您尝试访问SynchronizationAgent属性时,复制管理对象(RMO)程序集将使用这些组件 缺少注册是您收到ComErrorException的原因:您的32位应用程序正在查找具有特定GUID的ActiveX组件,但此GUID仅存在于64位注册表中,而您的应用程序未看到该组件。如果您构建“任意CPU”版本,您的应用程序将以64位运行,因此也将看到64位注册表 解决方法是让32位虚拟机运行并在那里安装32位版本的MicrosoftSQLServer2008。然后,您需要手动将一组特定文件从虚拟机复制到开发环境中,并将这些文件的注册作为应用程序设置的一部分进行集成 您可以从提交到的bug报告中找到解决方法的细节。bug报告的目标是针对32位SQL Server运行的64位应用程序,但场景是相同的