1

我正在尝试使用非 msi 安装程序分发 Visual Studio 的 .NET 向导表单。为简单起见,让我们关注 Visual Studio 2008。

因此,作为装配后构建过程的一部分,我调用:

regasm /regfile C:\path\to\my\assembly.dll

然后,打包生成的 regfile 并使用 regedit 将其与最终用户注册表合并。我看到程序集名称和 CLSID 已正确生成并分别放入 HKEY_CLASSES_ROOT 和 HKEY_CLASSES_ROOT\CLSID。

但是,在 Visual Studio 方面,安装完成后,出现错误。详细地说,该向导通过 vsdir 文件在“添加新项目”中看到。这指向 vsz 文件,Visual Studio 在该文件中看到相应的 COM 类。我可以说它在 HKEY_CLASSES_ROOT 中看到了这个类,因为错误消息实际上显示了正确的 CLSID:

Class not registered. Looking for object with CLSID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

我不完全确定问题是什么。我知道旧的 InstallShield 项目有一个简单的复选框,用于将程序集安装为 COM 互操作。不幸的是,这对我不可用。也许这不是真正的问题,我在 Visual Studio 2008 安装方面遗漏了一些东西。

任何想法或调试帮助将不胜感激。首先,我想验证是否为 COM 互操作正确安装了该程序集。我以前从未使用过 COM,所以对我来说都是希腊语。:)

编辑:我应该提到,这个相同的程序集是用一个“旧”的 InstallShield 项目构建和分发的。因此,我知道问题在于我自己对将 .NET COM 向导添加到 Visual Studio 添加项对话框的理解/实现。

4

1 回答 1

1

您的类(或程序集)是否将 Com 可见属性设置为 true?

于 2012-10-22T21:21:10.043 回答