Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Excel 2010加载项转换为2007加载项(包括VSTO)_C#_Vsto_Excel 2007_Add In_Excel 2010 - Fatal编程技术网

C# 将Excel 2010加载项转换为2007加载项(包括VSTO)

C# 将Excel 2010加载项转换为2007加载项(包括VSTO),c#,vsto,excel-2007,add-in,excel-2010,C#,Vsto,Excel 2007,Add In,Excel 2010,我目前正在开发Excel 2010外接程序,以前是Excel 2007外接程序。 我想,在交换计算机的过程中,加载项被转换了 我的一些客户表示该加载项在Excel2007上不再工作,因此我尝试在安装了Excel2007和VisualStudio2010的VirtualBox中调试它 现在我得到了错误消息: 无法调试或运行此项目,因为未安装所需版本的MicrosoftOffice应用程序 我启动了一个新的Excel2007加载项项目,试图找出它们之间的区别,并提出了一个想法,即它与dll有一定关系

我目前正在开发Excel 2010外接程序,以前是Excel 2007外接程序。 我想,在交换计算机的过程中,加载项被转换了

我的一些客户表示该加载项在Excel2007上不再工作,因此我尝试在安装了Excel2007和VisualStudio2010的VirtualBox中调试它

现在我得到了错误消息:

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

我启动了一个新的Excel2007加载项项目,试图找出它们之间的区别,并提出了一个想法,即它与dll有一定关系,因此我更改了我的2010加载项,直到它看起来像2007加载项

我仍然收到错误消息,说明无法调试我的项目

有什么我会忘记改变的吗

不幸的是,编写一个全新的加载项不是一个选项

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


  • 要获得VS 2010使用Office 2007修改项目文件(.csproj),使其在Office 2007中打开,并且在运行时不查找Office 2010(因此出现上面的错误消息)

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

    源XPath:

    //Project/ProjectExtensions/VisualStudio/FlavorProperties/ProjectProperties/@debugInfoExName

    旧价值观(Office 2010):

    DebugInfoExeName=“#Software\Microsoft\Office\14.0\Excel\InstallRoot\Path#Excel.exe”

    新价值(Office 2007):

    DebugInfoExeName=“#软件\Microsoft\Office\12.0\Excel\InstallRoot \路径#excel.exe“


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

    通常,当我使用VSTO外接程序开发多个版本的Office时,我针对每个版本的Office都有一个项目。我将项目之间的所有公共代码放入单个项目(通常是最旧的项目)并使用链接文件,然后将公共文件添加到较新的项目中。这使我能够编写一组通用核心代码,从每个Office版本的需求中抽象出来。这意味着我不再反对为每个版本的Office编译VSTO的不同方式。使用共享文件夹和虚拟机可以使这变得更容易,因此我可以在不使用多台计算机的情况下进行开发和测试。它一点也不优雅,但对我来说很管用。这将允许您针对Office 2007和Office 2010开发VSTO插件,而不会产生太多问题。

    看起来#符号只是包围了一个注册表路径,它基本上是说“从注册表中查找此路径并将excel.exe附加到它。”--因此我决定将我的注册表设置从12.0配置单元克隆到14.0配置单元,并试一试。瞧!它起作用了现在,我可以打开一个.sln/.csproj文件,在我的Windows XP/Office 2007虚拟机上调试与在Windows 7/Office 2010虚拟机上相同的加载项(当然可以使用VSTO 4.0)。因此,在不同的虚拟机上有不同版本的Visual Studio,对吗?@T.Todua,现在我想不起来了。自从我开发VSTO插件以来,已经将近6年了。我确实记得为这个项目运行了几个虚拟机,所以对于我开发的每个环境,我都有一个虚拟机是有意义的。