C# 在哪里可以找到x64版本的Office互操作程序集?

C# 在哪里可以找到x64版本的Office互操作程序集?,c#,.net,winforms,ms-office,C#,.net,Winforms,Ms Office,我正在尝试在VisualStudio 2010中运行。 它在我的64位机器上构建并运行良好 注意:我必须将项目的构建平台更改为x86 我的问题是,当我尝试运行编译的程序集时(将调试文件夹移动到另一台64位计算机后),我无法运行我的项目。当我打开它时,我的exe出现故障 据我所知,问题是因为项目中使用的三个DLL是32位的,机器是64位的 注:下面是三个DLL Interop.Office.dll Interop.VBIDE.dll Interop.Word.dll 我在谷歌上搜索了很多,但

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

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

我的问题是,当我尝试运行编译的程序集时(将调试文件夹移动到另一台64位计算机后),我无法运行我的项目。当我打开它时,我的exe出现故障

据我所知,问题是因为项目中使用的三个DLL是32位的,机器是64位的

注:下面是三个DLL

Interop.Office.dll

Interop.VBIDE.dll

Interop.Word.dll
我在谷歌上搜索了很多,但找不到任何解决方案? 我想到的一个解决方案是设法获得64位版本的上述DLL,我也在谷歌上搜索了很多,但什么也找不到。
你能帮我找到解决这个问题的办法吗?或者有没有办法找到上述DLL的64位版本?

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

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

您可以使用Microsoft utility确保DLL编译正确(仅32位)


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

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

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

您可以使用Microsoft utility确保DLL编译正确(仅32位)

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

更多信息:

Office的默认版本是32位版本

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

不幸的是,这意味着有两种开发环境,如32位Office更多信息:

Office的默认版本是32位版本

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


不幸的是,这意味着有两种开发环境,如32位Office,您确定Office互操作是问题所在吗

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

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

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

请记住,抛开ngen不谈,代码的位在运行之前是不确定的。编译后,代码只是等待编译的IL,无论您的构建平台是x86、x64还是AnyCPU,它都是相同的IL

运行时,运行时会查看清单并将其编译到所选的平台。。。在这个例子中是x86。。。根据你所说的

所以问题不在于:

项目中使用的三个DLL为32位,机器为64位

32位DLL在64位机器上随处可见。Visual Studio本身是一个32位应用程序,在64位计算机上运行良好。问题(IMHO)是

  • 不是办公室的DLL,而是别的东西。。。我想Office安装在另一台机器上
  • 在部署到x86以外的其他版本之前,您意外更改了上次生成的目标平台

  • 你确定办公室互操作是问题所在吗

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

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

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

    请记住,抛开ngen不谈,代码的位在运行之前是不确定的。编译后,代码只是等待编译的IL,无论您的构建平台是x86、x64还是AnyCPU,它都是相同的IL

    运行时,运行时会查看清单并将其编译到所选的平台。。。在这个例子中是x86。。。根据你所说的

    所以问题不在于:

    项目中使用的三个DLL为32位,机器为64位

    32位DLL在64位机器上随处可见。Visual Studio本身是一个32位应用程序,在64位计算机上运行良好。问题(IMHO)是

  • 不是办公室的DLL,而是别的东西。。。我想Office安装在另一台机器上
  • 在部署到x以外的其他版本之前,您意外更改了上次生成的目标平台