2010-01-19 75 views
1

我有一个使用少数第三方DLL的项目,并且正在开发部署的安装项目。在Visual Studio 2005中运行(调试)时程序运行良好,但在“安装”时不运行(调试)。在.NET项目中找不到DLLs

将DLL正确复制到应用程序文件夹。我的理解是,DLL没有被安装程序注册。 “以便在检索COM类工厂CLSID组件{GUID}失败,原因是以下错误:80040154”

在安装项目,每个DLL组件具有“注册”属性设置为“vsdraCOM”,这是我思想本应该引发注册。

编辑:看来他们都是.NET程序集,因为我的应用程序,注册应该不成问题。标题被改变以反映这一点。

这似乎应该是非常基本的,但我不应该做什么?

回答

0

正在使用的DLL在安装程序中出现在供应商的文档,代码示例等SDK包中。我将所有移动到新计算机时传输的松散文件都拿出来,但没有发现我实际上没有在新计算机上运行安装程序。

安装SDK必须做任何需要注册 - 我的应用程序现在运行正常。我可以通过运行两个安装程序来安装在目标机器上,这是可以接受的。

0

使用Dependency Walker(http://dependencywalker.com/)检查DLL可能试图加载的内容。

然后尝试在注册表下的HKCR \ CLSID下搜索您的GUID,其中InprocServer32应包含成功注册DLL的路径。

+0

看起来像这些是.NET程序集。根据Dependency Walker,每个只依赖于MSCOREE.DLL,它似乎是.NET运行时(?)。有趣的是,埋在卡片屋里,MSJAVA.DLL似乎不见了。 Visual Studio也显示每个依赖于.NET Framework,但也相互依赖(包括两者)。最后一个没有在Dependency Walker中显示。 最后,我无法在注册表中找到GUID。 – mbmcavoy 2010-01-20 01:00:06

+0

嗯,我正在深入探究MSJAVA.DLL的问题,并且根据Dependency Walker常见问题解答,它是一个可选组件,它可以丢失... – mbmcavoy 2010-01-20 01:04:13

0

如果这些是自注册的正常COM对象(不是.NET程序集)(即,您可以使用regsvr32注册它们),那么您想要vsdraCOMSelfReg而不是vsdraCOMvsdraCOM用于为COM互操作注册.NET程序集。

是的,它并不直观。

+0

我相信这些都是.NET程序集,由于依赖关系,他们无法注册regsrv32。 – mbmcavoy 2010-01-20 00:56:02