【问题标题】:convert an Excel 2010 addin to a 2007 addin (both VSTO)将 Excel 2010 插件转换为 2007 插件(均为 VSTO)
【发布时间】:2012-09-25 13:50:24
【问题描述】:

我目前正在开发一个 Excel 2010 加载项,该加载项以前是 Excel 2007 加载项。 我认为在切换计算机的过程中的某个地方,插件被转换了。

我的一些客户表示该加载项不再适用于 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

【问题讨论】:

    标签: c# vsto excel-2007 add-in excel-2010


    【解决方案1】:

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

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

    源 XPath:

    //Project/ProjectExtensions/VisualStudio/FlavorProperties/ProjectProperties/@DebugInfoExeName

    旧值(Office 2010):

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

    新价值(Office 2007):

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

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

    【讨论】:

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

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

    【讨论】:

    • 那么,你在不同的虚拟机上有不同版本的 Visual Studio,对吧?
    • @T.Todua,在这一点上,我不记得了。自从我从事 VSTO 加载项工作以来,已经快 6 年了。我确实记得为该项目运行了多个 VM,因此我为每个正在开发的环境都有一个 VM 是有意义的。
    猜你喜欢
    • 2011-08-27
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多