我的申请存在严重问题。我有一个本机应用程序,它使用一些托管类来工作。我创建了一个C ++ \ Cli包装器,它是非托管代码和托管代码之间的代理。
在这个代理项目中,我已经声明了一些公开的COM对象,它们的实现使用了在托管程序集中声明的C#对象。
在我的开发环境中一切正常,但是当我想在干净的系统上安装我的应用程序时会出现问题。
我有一个MSI项目,可以使用 vsdraCOM 或 vsdraCOMRelativePath 注册此CLR代理。事实上,它们都不起作用。应用程序显示错误,即未注册特定对象(在此代理中定义)。
我可以使用regsvr32手动注册此dll,但我想避免这种情况,让我的MSI包为我做。
我在这个dll上尝试过使用Regasm,它说没有找到注册对象。所有公开的接口都在 IDL 文件中定义。
您能告诉我如何使这些IDL定义的接口暴露或对regasm可见吗?
答案 0 :(得分:0)
我可以使用regsvr32手动注册此dll,但我想 避免这种情况,让我的MSI包为我做。
Visual Studio提供的注册选项仅供一般使用。如果它们不适合您,那么您需要确定文件的注册方式并使用自定义操作来执行此操作。
如果使用regsvr32.exe,请在注册文件的自定义操作中使用它。
我已尝试在此dll上使用Regasm,它说没有对象 找到注册。
Regasm.exe与regsvr32.exe不同。 Regasm.exe注册程序集和regsv32.exe注册命令组件。
您能告诉我如何使这些IDL定义的接口公开 或者对regasm可见吗?
Regasm.exe只能注册强名称程序集。你可以在这里阅读更多相关信息: http://msdn.microsoft.com/en-us/library/xwb8f617.aspx