将Excel 2010插件转换为2007插件(均为VSTO)

Bon*_*ngo 10 c# vsto add-in excel-2007 excel-2010

我目前正在使用Excel 2010加载项,以前是Excel 2007加载项.在切换计算机的过程中,我认为加载项已被转换.

我的一些客户表示加载项不再适用于Excel 2007,因此我尝试在安装了Excel 2007和Visual Studio 2010的VirtualBox中对其进行调试.

现在我收到错误信息:

您无法调试或运行此项目,因为未安装所需的Microsft Office应用程序版本.

我开始了一个新的Excel 2007加载项目,并尝试找出差异是什么,并想出它与dll有点关系,所以我改变了我的2010插件,直到它看起来像2007插件.

我仍然收到错误消息,指出我的项目无法调试.

有什么我可以忘记改变的吗?

遗憾的是,编写一个全新的插件不是一种选择.

到目前为止,这些问题对我没有帮助:

  1. 适用于Excel 2007和2010的Excel Addin
  2. 部署Office 2010插件

Sli*_*SFT 8

要使VS 2010Office 2007一起使用,请修改项目文件(.csproj),以便它在Office 2007中打开,而不是在运行时查找Office 2010(因此上面的错误消息).

这是项目设置更改(Excel示例):

源XPath:

//项目/ ProjectExtensions/VisualStudio中/ FlavorProperties/ProjectProperties/@ DebugInfoExeName

旧价值(Office 2010):

DebugInfoExeName = "#软件\微软\办公室\ 14.0\EXCEL\InstallRoot \路径#EXCEL.EXE"

新价值(Office 2007):

DebugInfoExeName ="#Software\Microsoft\Office\12.0\Excel\InstallRoot\Path#excel.exe"

更改此项目设置后,当您启动调试器(F5)时,它将加载Excel 2007应用程序而不是查找Excel 2010.

  • 看起来#符号只是包含一个注册表路径 - 看起来它基本上是说"从注册表中找到这条路径并将excel.exe附加到它上面". - 所以我决定将我的注册表设置从12.0 hive克隆到14.0 hive并试一试.罗'看哪!有用! - 我现在可以打开一个.sln/.csproj文件并在我的Windows XP/Office 2007 VM上调试相同的加载项,就像我在Windows 7/Office 2010 VM上一样(当然使用VSTO 4.0). (3认同)

Pet*_*ano 6

通常,当我使用VSTO加载项针对多个版本的Office进行开发时,我为每个目标版本的Office都有一个项目.我将项目之间的所有公共代码放入一个项目(通常是最旧的项目)并使用链接文件,我将公共文件添加到较新的项目中.这允许我编写一组通用核心代码,从每个版本的Office的要求中抽象出来.这意味着我不再为每个版本的Office编译VSTO的不同方式.使用共享文件夹和虚拟机可以使这更容易,因此我可以在没有多台计算机的情况下进行开发和测试.它绝不是优雅的,但对我来说效果很好.这应该允许您针对Office 2007和Office 2010开发VSTO加载项,而不会出现太多问题.