2016-05-03 58 views
0

我有一个用VBA编写的Excel插件,它可以遍历表单的使用范围并操纵单元格值。它是一个简单的插件,但现在用户需求已经改变,我想在Visual Studio中用C#开发它。为此我正在研究VSTO,但就我在Visual Studio中可以理解的情况而言,您可以开发用于单个版本的Excel的插件。我必须为excel 2010和excel 2013提供支持。我应该如何解决这个问题。哪个视觉工作室版本我应该使用?Visual Studio中的Excel 2010和Excel 2013的Excel Addin

回答

1

任何版本的Visual Studio从2010年到现在应该能够创建VSTO加载项为Excel 2010 。从VS 2012开始,也适用于Office 2013.您在更高版本中看到的哪组模板取决于1)安装的Office版本和2)创建项目时选择的.NET Framework版本(4.0 for 2010; 4.5以后)。更多信息可以在这个页面找到:https://blogs.msdn.microsoft.com/vsto/2013/03/06/office-developer-tools-for-visual-studio-2012-now-available-with-office-2013-and-net-framework-4-5-support/

请注意,你应该只有一个版本的Office安装在开发环境中。

如果可能,您应该开发Excel 2010外接程序。为旧版本开发的外接程序将运行更新的版本,而无需另外进行任何操作 - 假设Microsoft未做出更改到你使用的将破坏它的对象模型的部分。由于Microsoft特别关注向后兼容性,这通常不是问题,但彻底的测试非常重要。没有必要重新构建或以其他方式更改安装以安装到较新版本的Office。

针对旧版本开发的一个重要原因是转发兼容性不受支持。换句话说,如果你应该使用较旧版本中不存在的东西,那么代码将失败。

此外,VSTO功能会自动将对较旧版本PIA的引用重新映射到较新版本Office的新版本。反过来是不是的情况。

如果出于某种原因无法使用旧版本进行编程,只要您有.NET Framework 4.0(或更高版本),就可以使用Reference的“Embed Interop types”属性来嵌入PIA信息在您的项目中,以便它与您的解决方案一起旅行,而不是参考安装在GAC 中的PIA,使它们独立于版本。理论上这很好,但需要非常彻底和认真的测试,因为除了前向兼容性问题外,实际嵌入的信息并不总是正确的。

+0

谢谢你的详细解答。 –

0

您需要安装支持Excel 2013的VSTO版本13的Visual Studio 2013,但您可以通过从应用程序创建安装程序文件来支持Excel 2010。并没有其他的方式来支持从代码库的两个不同版本同时

感谢

+0

你的意思是我必须从同一个项目为Excel2010&2013创建两个不同的安装程序,或者我必须为两个Excel版本维护两个不同的项目? –

+0

是的,你可以从同一个项目创建两个不同的安装程序 –