VSTO 2003-2010 совместимость надстроек - PullRequest
4 голосов
/ 07 марта 2011

Я хочу создать надстройку Office, совместимую с Office 2003, 2007 и 2010. VS2008 позволяет создавать надстройки 2003/2007, а VS2010 - 2007/2010.Я установил оба.

Я разработал надстройки 2007/2010 раньше, как надстройку 2007 года, которая автоматически работала с Office 2010.

Проблема, с которой я сейчас сталкиваюсь - это отсутствиеленточный интерфейс в Office 2003 и как структурировать проект так, чтобы одна надстройка была совместима с Office 2003-2010.

Учитывает ли это различия между различными версиями Office (особенно с 2003 по 2007/2010)?можно иметь одну надстройку для всех?

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

На самом деле я разрабатываю общую надстройку для Office с использованием Visual Studio 2010, и у меня были те же требования для версий Office.И он действительно загружается в этих офисах (хотя Microsoft говорит, что плагин VS 2010 не совместим с Office 2003).Я проверяю версию с помощью Application.Version.Если это <12, то я использую CommandBars, чтобы программно построить меню.В противном случае я использую расширение ленты (загрузка из xml) для создания меню. </p>

ОБНОВЛЕНИЕ Вам следует помнить, что некоторые функции недоступны в Office 2003. Дляпример TextRange2.

2 голосов
/ 23 марта 2011

Я создал одну надстройку, предназначенную для версий Outlook 2003, 2007 и 2010. Я сделал это с VS2008, VSTOSE и PIA2003, а также с Outlook 2003 на моей машине разработчика. Я не знаю, как это будет масштабироваться до надстроек уровня офиса / документа, но это может сработать.

Однако вам потребуется определить версию Outlook / Office на каждом клиенте и установить соответствующую PIA.

Это можно сделать с помощью Проверка компонентов . В каждом пакете 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 год:

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

Идентификаторы продукта на 2010 год:

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

Это означает, что вы должны будете включить предварительные требования в ваш установочный пакет, а не разрешать загрузки, что, очевидно, увеличит размеры загрузки.

Вы также сможете использовать методы и т. Д., Которые есть в 2003 году. Кроме того, все созданные вами панели инструментов будут базовыми, поскольку у вас не будет полного контроля над лентой. Вы по-прежнему можете добавлять кнопки и т. Д., Как и в 2003 и 2007 годах. Они появятся в отдельной группе лент в 2010 году.

Один совет, хотя в своем решении я создал отдельную сборку для всего, что не взаимодействовало с Outlook. Таким образом, если требования изменятся в будущем, я могу легко разделить надстройки на определенные версии, не затрагивая основные основные функции надстройки.

1 голос
/ 07 марта 2011

Используя VSTO, вам, вероятно, потребуются различные надстройки (см. Таблицу совместимости в статье о VSTO на английском языке в Википедии).

Если (1) вам необходимо привестиваше решение быстро выходит на рынок, и если (2) у вас есть основания полагать, что ваша кодовая база будет нуждаться в частых обновлениях в будущем, вы можете рассмотреть возможность использования стороннего инструмента, такого как Add-in Express, который позволяет вам создавать то, что вынужно с меньшими головными болями.

...