VSTO 2003-2010附加兼容性

时间:2011-03-07 10:26:43

标签: c# vsto ms-office outlook-addin

我想创建一个与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)之间的差异,是否可以为所有版本添加一个加载项?

3 个答案:

答案 0 :(得分:2)

实际上我正在使用Visual Studio 2010开发Office的共享加载项,我对Office版本也有同样的要求。它实际上在这些办公室加载(尽管微软称VS 2010插件与Office 2003不兼容)。我使用Application.Version检查版本。如果它是< 12然后我使用CommandBars以编程方式构建菜单。否则,我使用功能区扩展(从xml加载)来构建菜单。

更新您必须记住,Office 2003中没有某些功能。例如TextRange2。

答案 1 :(得分:2)

我创建了一个单独的加载项,其目标是2003年,2007年和2007年。 2010版Outlook。 我使用VS2008,VSTOSE和PIA2003,以及我的开发机器上的Outlook 2003。我不是如何扩展到办公室/文档级插件,但它可能会起作用。

但是,您需要检测每个客户端上的Outlook / Office版本并安装相应的PIA。

可以使用Component Checker完成此操作。在每个Bootstrapper软件包中,您可以检查以查看哪个版本存在,并且仅在适用时安装该软件包。例如,在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年的产品ID是:

Outlook : 0638C49D-BB8B-4CD1-B191-050E8F325736 
PIA: ED569DB3-58C4-4463-971F-4AAABB6440BD

2010年的产品ID是:

Outlook : CFF13DD8-6EF2-49EB-B265-E3BFC6501C1D
PIA: 1D844339-3DAE-413E-BC13-62D6A52816B2

这意味着您必须将先决条件包含在安装程序包中,而不是允许下载,这显然会增加下载大小。

您也只能使用2003年的方法等。此外,您创建的任何工具栏都是基本的,因为您无法完全控制功能区。你仍然可以像2003年那样添加按钮等。他们将在2010年出现在他们自己的乐队组中。

但是,在我的解决方案中,我为一些没有与Outlook交互的内容创建了一个单独的程序集。这样,如果将来需求发生变化,我可以轻松地将加载项拆分为目标特定版本,而不会影响加载项的主要核心功能。

答案 2 :(得分:1)

使用VSTO,您可能需要不同的加载项(请参阅英语维基百科关于VSTO的文章中的table of compatibility)。

如果(1)您需要快速将您的解决方案推向市场,并且如果(2)您有理由相信您的代码库将来需要频繁更新,您可以考虑使用第三方工具,例如加载项快速,可让您轻松创建所需内容。