2012-09-25 49 views
10

我目前的工作在Excel 2010的插件,其前身是2007年Excel加载项。 在切换电脑的过程中,我认为加载项已转换。转换为Excel 2010插件的插件2007(VSTO两者)

我的一些客户表示,该加载项不工作在Excel 2007中了,所以我试图用Excel 2007和安装了Visual Studio 2010来调试它在VirtualBox的。

现在我得到的错误信息:

不能调试或运行该项目,因为没有安装的Microsft Office应用程序所需的版本。

我开始了一个新的Excel 2007的插件项目,并试图找到的差异是什么,以及与想法,这一定程度上与该dll做上来是如此,我改变了2010的插件,直到它看上去像一个2007插件。

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

有什么我可以忘记改变。

不幸的是不能写一个全新的插件。

这些问题并没有帮助我至今:

  1. Excel Addin that works on Excel 2007 and 2010
  2. Deploying Office 2010 addin

回答

8

为了得到VS 2010Office 2007的工作修改项目文件(。 csproj),以便在Office 2007中打开并在运行时不查找Office 2010(因此上面的错误消息)。

这里是项目设置的变化(Excel的例子):

来源的XPath:

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

Old Value(Office 2010):

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

新价值(办公室2007):

DebugInfoExeName =“#Software \ Microsoft \ Office \ 12.0 \ Excel \ InstallRoot \ Path#excel。EXE”

更改该项目设置后,当你火起来的调试器(F5),它会加载Excel 2007中的应用程序,而不是寻找Excel 2010中

+1

谢谢,这个提示非常棒。 – Bongo

+3

它看起来像#符号只是包含注册表路径 - 它看起来像是基本上说“从注册表中找到此路径并将excel.exe附加到它。” - 所以我决定将我的注册表设置从12.0配置单元克隆到14.0配置单元,并给它一个镜头。瞧!“瞧!有用! - 我现在可以打开一个.sln/.csproj文件,并在Windows XP/Office 2007虚拟机上调试相同的加载项,就像我在Windows 7/Office 2010 VM上(当然使用VSTO 4.0)一样。 – BrainSlugs83

6

通常,当我反对发展多个版本的Office与VSTO插件,我有针对每个版本的Office的项目,我把项目之间的所有通用代码放到一个项目中(通常是最老的项目)并使用链接文件,我添加了常见的文件到更新的项目,这使我可以编写一套通用的核心代码,从每个版本的Office的要求中抽象出来,这意味着我不再与VST的不同方式作斗争O是为每个版本的Office编译的。使用共享文件夹和虚拟机可以使这更容易,所以我可以在没有多台计算机的情况下开发和测试。这绝不是优雅,但它对我来说很好。这应该允许您在没有太多问题的情况下针对Office 2007和Office 2010开发VSTO加载项。

+0

因此,您在不同的VM上有不同版本的Visual Studios,对吧? –

+1

@ T.Todua,在这一点上,我不记得。自从我加入VSTO插件以来已经快6年了。我记得为这个项目运行了几个虚拟机,所以我为每个为我开发的环境准备了一个虚拟机。 –