我要创建与Office 2003、2007和2010兼容的Office外接程序。VS2008允许创建加载项2003/2007,而VS2010允许创建2007/2010。这两个我都安装了。
我以前开发过2007/2010插件,作为2007插件,可以自动与Office 2010一起使用。
我现在面临的问题是Office 2003中缺少功能区界面,以及如何构建项目结构,以便单个插件与Office 2003-2010兼容。
考虑到不同Office版本之间的差异(特别是2003到2007/2010),有没有可能有一个适用于所有版本的插件?
发布于 2011-03-08 04:55:56
使用VSTO,您可能需要不同的插件(请参阅英文维基百科中关于VSTO的table of compatibility )。
如果(1)您需要将您的解决方案快速推向市场,并且(2)您有理由相信您的代码库在未来将需要频繁更新,您可以考虑使用第三方工具,如Add-in Express,它可以让您更轻松地创建所需的内容。
发布于 2011-03-16 20:51:55
实际上,我正在使用Visual Studio2010为Office开发一个共享插件,我对Office版本也有同样的要求。它实际上加载在这些办公室(虽然微软说VS2010插件与Office2003不兼容)。我使用Application.Version检查版本。如果它小于12,那么我使用CommandBars以编程方式构建菜单。否则,我将使用ribbon扩展(从xml加载)来构建菜单。
UPDATE Office2003您必须记住,Office2003中不提供某些功能。例如TextRange2。
发布于 2011-03-24 00:22:15
我已经创建了一个插件,目标是Outlook的2003、2007和2010版本。我在我的开发机器上使用了VS2008,VSTOSE和PIA2003,以及Outlook2003。我不知道这将如何扩展到office/文档级插件,但它可能会起作用。
但是,您需要检测每个客户端上的Outlook/Office版本,并安装相应的PIA。
这可以使用Component Checker来完成。然后,在每个Bootstrapper包中,您可以检查是否存在哪个版本,并仅在适用时安装该包。例如,在引导程序包的product.xml中,您将拥有:
<?xml version="1.0" encoding="utf-8"?><InstallChecks>
<ExternalCheck Property="Office2003Exists" PackageFile="ComponentCheck.exe" Arguments="{3EC1EAE0-A256-411D-B00B-016CA8376078}"/>
<ExternalCheck Property="Office2003PIAExists" PackageFile="ComponentCheck.exe" Arguments="{14D3E42A-A318-4D77-9895-A7EE585EFC3B}"/>
</InstallChecks>
<Commands Reboot="Defer">
<Command PackageFile="o2003pia.msi" Arguments="" EstimatedInstalledBytes="30000000" EstimatedInstallSeconds="60">
<InstallConditions>
<BypassIf Property="Office2003Exists" Compare="ValueNotEqualTo" Value="0" />
<BypassIf Property="Office2003PIAExists" Compare="ValueEqualTo" Value="0" />
<FailIf Property="AdminUser" Compare="ValueEqualTo" Value="false" String="AdminRequired"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
</ExitCodes>
</Command>
</Commands>
2007年的产品ids为:
Outlook : 0638C49D-BB8B-4CD1-B191-050E8F325736
PIA: ED569DB3-58C4-4463-971F-4AAABB6440BD2010年的产品ids为:
Outlook : CFF13DD8-6EF2-49EB-B265-E3BFC6501C1D
PIA: 1D844339-3DAE-413E-BC13-62D6A52816B2这确实意味着你必须在你的安装包中包含先决条件,而不是允许下载,这显然会增加下载的大小。
您还将只能使用2003年的方法等。此外,您创建的任何工具栏都是基本的,因为您不能完全控制Ribbon。你仍然可以像在2003和2007中一样添加按钮等。它们将在2010年出现在自己的ribbon组中。
但有一点建议,在我的解决方案中,我为任何不与Outlook交互的东西创建了一个单独的程序集。这样,如果将来需求发生变化,我可以轻松地拆分外接程序以针对特定版本,而不会影响外接程序的主要核心功能。
https://stackoverflow.com/questions/5218488
复制相似问题