哪里可以找到x64版本的Office Interop程序集?

时间:2013-04-29 03:54:56

标签: c# .net winforms ms-office

我正在尝试在VisualStudio 2010中运行this project。 它在我的64位机器上构建并运行良好。

注意:我必须将项目的构建平台更改为x86。

我的问题是当我尝试运行编译的程序集(将调试文件夹移动到另一台64位机器之后)我无法运行我的项目。当我打开它时,我的exe崩溃了。

根据我的理解问题是因为项目中使用的三个DLL是32位,而机器是64位。

注意:下面是三个DLL

Interop.Office.dll

Interop.VBIDE.dll

Interop.Word.dll

我用Google搜索了但是找不到任何解决方案? 我想到的一个解决方案是设法得到64BIT版本的上述DLL,我也搜索了很多,但无法得到任何东西。 你能帮我找到解决这个问题的方法吗?或者有没有办法找到上述DLL的64BIT版本?

3 个答案:

答案 0 :(得分:2)

如果必须使用32位dll,可能无法运行64位编译的应用程序。

因此,您需要在发布到另一台PC之前,以32位模式编译所有项目(就像调试一样)。

您可以使用Microsoft CorFlags.exe实用程序确保您的dll编译正确(仅限32位)。

如果您发现dll不是32位,您也可以尝试使用相同的实用程序( / 32BITS falg)进行更改。

答案 1 :(得分:1)

更多信息:

Office的默认版本是32位版本。

要获得64位版本的程序集,您需要专门安装64位办公室(请参阅here。) 64位版本的Office应该能够使用您的32位程序(使用WoW) 但最好是创建(并测试)它的两个版本:一个用于32位,一个用于64位。

不幸的是,这意味着两个开发环境为32位Office cannot be installed along side the 64 bit one.

答案 2 :(得分:1)

你是否肯定办公室interOps是问题?

您收到的错误消息是什么?您已声明正在使用x86平台构建模式进行编译。因此,即使在另一台64位计算机上,您的dll也将以32位进程运行,因此将调用32位办公室dll。

如果您已编译为AnyCPU,那么我可以看到您获得的错误与office dll位的关系,因为您的应用程序将以64位(在64位计算机上)启动,然后尝试调用32位办公室dll。

但我无法理解你是如何发现32位dll是任何32位或64位机器上的问题,因为你编译为32位(x86)。所以你的程序集清单告诉JIT编译器,“嘿我是一个32位进程”。

请记住,除了它之外,代码的位数在运行之前是不确定的。编译后,代码只是等待编译的IL,无论你是否有x86或x64或AnyCPU的构建平台,它都是相同的IL。

当它运行时,运行时查看清单并将其编译到所选平台...在这种情况下是x86 ...来自你所说的。

所以问题不在于:

  

项目中使用的三个DLL是32位,而机器是64位。

在64位计算机上使用32位dll。 Visual Studio本身是一个32位应用程序,在64位机器上运行得很好。问题(恕我直言)是

  1. 根本不是办公室的dll而是其他东西... Office安装在我认为的另一台机器上。
  2. 在部署到x86之外的其他内容之前,您不小心更改了上次构建的目标平台。