如何在vs2010中为64位版本的办公室开发Microsoft office word addin

时间:2015-04-29 04:06:50

标签: c# com vsto office-interop office-addins

我已经在vs2010中开发了一个单词的插件。它在32位版本的办公室工作很酷,但它不适用于64位版本的办公室。很多搜索并发现

For 64-bit Root\Software\Microsoft\Office\application name\Addins\add-in ID
For 32-bit Root\Software\Wow6432Node\Microsoft\Office\application name\Addins\add-in ID

注册表信息路径。我尝试注册64位的信息。即使它不能在64位的办公室工作。在64位的办公室中,我的插件显示在 InActive Application Add-Ins 下。我甚至尝试启用它。

如何为64位办公室开发和部署插件..?

我收到以下错误.. !!

  

无法加载文件或程序集&x; xxxxx,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。试图加载格式不正确的程序。

     

**************例外文字**************   System.BadImageFormatException:无法加载文件或程序集' xxxxx,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。尝试加载格式不正确的程序。   文件名:' xxxxx,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'

 at MyWord.ThisAddIn.ThisAddIn_Startup(Object sender, EventArgs e)
   at MyWord.ThisAddIn.FinishInitialization()
  

在   Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases   executionPhases)at   Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints()   警告:装配绑定日志记录已关闭。要启用程序集绑定   失败日志记录,设置注册表值   [HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)为1.注意:有   与程序集绑定失败相关的一些性能损失   日志记录。要关闭此功能,请删除注册表值   [HKLM \ SOFTWARE \微软\融合!EnableLog]。

2 个答案:

答案 0 :(得分:3)

  

尝试加载格式不正确的程序

在99%的情况下,这只是在64位程序中引发此异常时的一件事。 “格式不正确”是包含32位代码的DLL。这不起作用,64位程序只能加载64位DLL。

如果您使用C#编写该加载项,那么这是一个非常简单的修复。在Solution Explorer窗口的Properties,Build选项卡中右键单击该项目。将“平台目标”设置为AnyCPU。如果你看到它(VS2012及以上),请取消选中“首选32位”复选框。对Release版本配置重复此操作。

其他可能的解释,不寻常的情况:

  • 未安装64位版本的.NET Framework
  • 使用C ++ / CLI语言编写代码,您必须构建x64版本
  • 依赖于32位非托管DLL
  • 意外加载错误的DLL

你需要SysInternals的Process Monitor来追逐这些不幸事件。该跟踪显示了Office程序正在查找的DLL以及它在哪个目录中查找DLL。这将是一个很大的痕迹,从追踪的底部向后工作。

答案 1 :(得分:1)

查看MSDN中的Deploying an Office Solution by Using Windows Installer文章,该文章深入介绍了所有必需的步骤。它陈述如下:

32位

  HKEY_LOCAL_MACHINE\SOFTWARE(32-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn

64位

 HKEY_LOCAL_MACHINE\SOFTWARE(32-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn
 HKEY_LOCAL_MACHINE\SOFTWARE(64-Bit)\Microsoft\Office\Excel\Addins\SampleCompany.ExcelAddIn

64位Windows的安装程序需要两个注册表路径,因为用户可以在运行64位Windows的计算机上运行32位和64位版本的Office。

但您可以检测(在自定义操作中)安装的MS Office的位数,并在正确的配置单元中创建密钥。