Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有一个工具可以注册32位COM类,供64位通过COM代理使用_C#_Com_Registry_32bit 64bit - Fatal编程技术网

C# 是否有一个工具可以注册32位COM类,供64位通过COM代理使用

C# 是否有一个工具可以注册32位COM类,供64位通过COM代理使用,c#,com,registry,32bit-64bit,C#,Com,Registry,32bit 64bit,我们有一些C#程序集,可以使用RegAsm注册,也可以使用32位Excel从VBA访问 如果我们使用64位Excel,那么我们需要添加注册表项,例如 [HKEY_CLASSES_ROOT\AppID\{F103997A-4B60-44BB-8935-AC85704A7960}] "DllSurrogate"="" [HKEY_CLASSES_ROOT\CLSID\{F103997A-4B60-44BB-8935-AC85704A7960}] AppID="{F103997A-4B60-44BB

我们有一些C#程序集,可以使用RegAsm注册,也可以使用32位Excel从VBA访问

如果我们使用64位Excel,那么我们需要添加注册表项,例如

[HKEY_CLASSES_ROOT\AppID\{F103997A-4B60-44BB-8935-AC85704A7960}]
"DllSurrogate"=""

[HKEY_CLASSES_ROOT\CLSID\{F103997A-4B60-44BB-8935-AC85704A7960}]
AppID="{F103997A-4B60-44BB-8935-AC85704A7960}"

[HKEY_CLASSES_ROOT\CLSID\{F103997A-4B60-44BB-8935-AC85704A7960}]
AppID="{F103997A-4B60-44BB-8935-AC85704A7960}"

这似乎足以让它发挥作用,但我们想知道是否有一个工具可以生成注册表项,并以与RegAsm register/unregister相同的方式删除它们。没有工具可以生成COM代理项,以使64位Excel能够与32位COM进行通信

我编写了一个简单的工具来生成.reg文件,安装程序使用它


当我们的类ID/prog ID更改时,将生成一个新的.reg文件

没有工具生成COM代理项,以使64位Excel能够与32位COM通信

我编写了一个简单的工具来生成.reg文件,安装程序使用它


当我们的类ID/prog ID发生变化时,将生成一个新的.reg文件,而不是像那样的代理文件,您可以使用COM+组件服务提供的文件:它是完全可编程的,如果您为MSIL编译它们(与x86或x64相反),它还提供一系列附加服务(池、回收等),然后可以使用regasm为32位和64位注册相同的程序集。诀窍是使用32位regasm注册32位,使用64位regasm注册64位。64位regasm通常位于c:\windows\Microsoft.Net\Framework64\v4.0.30319或您所在的任何位置。不幸的是,32位代码仍然依赖于其他32位元素,我们正在为任何CPU工作,但还没有…而不是像这样的代理,您可以使用COM+组件服务提供的服务:它是完全可编程的,并且还提供一系列附加服务(池、回收等)。如果您为MSIL编译它们(与x86或x64相反),那么您可以使用regasm为32位和64位注册相同的程序集。诀窍是使用32位regasm注册32位,使用64位regasm注册64位。64位regasm通常位于c:\windows\Microsoft.Net\Framework64\v4.0.30319或您所在的任何位置。不幸的是,32位代码仍然依赖于其他32位元素,我们正在为任何CPU工作,但还没有。。。