2014-12-01 56 views
1

我有一个新的系统。我试图通过64位Windows 7 PC连接并运行系统。该公司向我发送了一个Visual Basic项目。它使用.NET框架4和Windows窗体应用程序。目标CPU是x86。找不到指定的参考-Visual Basic 2013

在引用选项卡中,三个COM引用旁边有“系统找不到指定的引用”语句。在构建时,项目会因这些对象而提供名称空间错误和警告。其他参考工作正常。然后我在debug文件夹中看到了这些.dll文件。我认为它们是在寄给我之前由公司生成的。它们也存在于bin \ debug文件夹中。

我已经删除了三位来自引用列表中的项目,并试图分别如下:

1)在项目中,指的是存在于debug文件夹.dll文件。 (看起来是一种虚假的方式,但是在项目生成时会删除所有的错误,当调试时,它会给出“为CLSID组件检索COM类工厂...失败,因为以下错误:80040154”错误。)

2)将debug文件夹中的.dll文件复制到C:\ Windows \ SysWOW64文件夹中,然后以管理员身份通过regsvr32“name.dll”在控制台中注册。这样,我得到“.dll被加载,但没有找到DllRegisterServer入口点”错误。 (在注册表编辑器中,无法找到在VB中项目属性中看到的那些引用的ID。)

3)执行(2)项,但使用C:\ Windows \ System32文件夹而不是SysWOW64。注册时出现同样的错误。

4)将解决方案平台更改为x86并尝试了1,2和3项。仍有相同的错误。

我必须注册这些dll文件吗?而且,我应该注册这些dll文件,它们存在于debug文件夹中吗?或者它们是否应该在引用选项卡中引用一些“缺失”类型库后生成?不过,我没有这些类型的库。

所有建议都欢迎尽快。提前致谢。

+0

可能是硬编码的DLL文件路径。您应该在某些“参考文件夹”中收集它们,并使用该文件夹来引用DLL文件。您可以通过编辑项目文件来检查它,它是简单的XML。我不会注册这个DLL,它可能会给你带来很多自动构建和部署的麻烦。 – Styxxy 2014-12-02 01:15:21

+0

@Styxxy澄清它:这些是Interop DLL。我怎样才能找到他们的正常的DLL,所以我可以将它们添加到引用? – vbProjectGuy 2014-12-03 23:22:05

+0

@Styxxy并感谢您的建议。 – vbProjectGuy 2014-12-03 23:33:24

回答

0

您的项目有三个Interop dll,对不对?这些dll只允许您使用COM DLL,而无需直接与COM dll直接对话。

引用bin/Debug目录中的dll应该没问题,因为这些可能是项目构建的正确dll。但是,在继续之前,您需要将它们移到另一个文件夹中。

你需要从发送给你项目的公司得到的是最初的COM dll及其依赖项(如果有的话)。通常interop dll被称为Microsoft.Phone.Interop.dll它与Microsoft.Phone.dll互操作的地方。 Microsoft.Phone.dll需要使用regsvr32在您的计算机上注册,然后您只需要参考interop dll。

+0

哦,我的,是的。更新我的答案。 – JoelC 2014-12-08 21:59:19

+0

非常感谢。公司并没有向我发送这些.dll文件。正如你所说,引用Interop。dll很好,并且防止了构建错误。然后,在调试步骤中,我遇到了我在项目1中写入的错误。然后,我按照以下步骤操作:http://www.gfi.com/blog/32bit-object-64bit-environment/ 并且问题消失了,代码开始工作。此链接所做的只是将具有此特定CLSID的引用添加到PC的注册表库中。再次感谢。 – vbProjectGuy 2014-12-10 22:17:52