.net 为什么regasm/regfile看起来不完整?

.net 为什么regasm/regfile看起来不完整?,.net,registry,installshield,.net,Registry,Installshield,我有一个.NET程序集需要在安装时注册。我注意到当直接使用regasm与通过regasm的注册表脚本安装时,注册表有细微的差别 这是我的测试: 我导出原始HKCR配置单元,然后运行:regasm my.dll 从那里,我导出随后的HKCR配置单元和性能差异 然后将该差异与regasm my.dll/regfile 通过regasm my.dll添加的几个非常重要的条目永远不会与从regasm命令输出的注册表文件一起添加为什么? 从安装的角度来看,我非常讨厌在安装过程中调用regasm。我宁愿运行

我有一个.NET程序集需要在安装时注册。我注意到当直接使用
regasm
与通过
regasm
的注册表脚本安装时,注册表有细微的差别

这是我的测试:

我导出原始HKCR配置单元,然后运行:
regasm my.dll

从那里,我导出随后的HKCR配置单元和性能差异

然后将该差异与
regasm my.dll/regfile

通过
regasm my.dll
添加的几个非常重要的条目永远不会与从
regasm
命令输出的注册表文件一起添加为什么?


从安装的角度来看,我非常讨厌在安装过程中调用
regasm
。我宁愿运行这个.reg脚本。我现在正在使用InstallShield,它在引擎盖下也缺少额外的注册表项(它似乎嵌入了用
/regfile
标志输出的注册表更改)。

额外的注册表操作正在幕后进行,在方法中装饰有
ComRegisterFunction
属性。显然,这些方法不是通过
/regfile
开关调用的。

Per(备注部分)

可以使用/regfile选项生成包含以下内容的.reg文件: 更改注册表项,而不是直接对 登记处。您可以通过导入来更新计算机上的注册表 使用注册表编辑器工具(Regedit.exe)创建.reg文件。请注意 .reg文件不包含任何可由用户进行的注册表更新 用户定义的寄存器函数。请注意,仅使用/regfile选项 发出托管类的注册表项。此选项不发射 TypeLibIDs或InterfaceID的条目


InstallShield有一个名为“.NET COM Interop”的设置,它基本上告诉生成引擎在生成MSI之前执行regasm/regfile并将结果转换到注册表表中。如果您愿意,您可以继续这样做,但您必须静态地添加额外的内容。

缺少哪些条目?它非常特定于应用程序(GUID不是“我们的”,但可能是由依赖项拉入的):
[HKEY_CLASSES_ROOT\CLSID\{xxxx}\Implemented Categories\{B56A7C42-83D4-11D2-A2E9-08009B6F22B}]
googleing它似乎与ESRI Mx命令有关-您想知道什么问题的答案?是的,它与此相关。我的问题是:
regasm/regfile
的输出为什么不生成这个条目?此注册表项仅在直接执行
regasm
后才显示在系统上。