Я должен вынудить своих клиентов установить Office Xxxx Primary Interop Assemblies?

Чтобы получить значение индекса, вы можете просто привести перечисление к int. Получение атрибута description немного сложнее. Может быть что-то вроде этого

public enum CountryListEnum
{
    [Description("United Kingdom")]
    UnitedKingdom = 0,
    [Description("United States")]
    UnitedStates = 1,
    [Description("Afghanistan")]
    Afghanistan = 2,
    [Description("Albania")]
    Albania = 3,
}

static void Main(string[] args)
{
    foreach (var country in Enum.GetValues(typeof(CountryListEnum)).Cast<CountryListEnum>())
    {
        Console.WriteLine($"Index: {(int)country}");
        Console.WriteLine($"Description: {GetDescription(country)}");
    }
}

public static string GetDescription(Enum value)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    if (name != null)
    {
        System.Reflection.FieldInfo field = type.GetField(name);
        if (field != null)
        {
            if (Attribute.GetCustomAttribute(field,
                typeof(DescriptionAttribute)) is DescriptionAttribute attr)
            {
                return attr.Description;
            }
        }
    }
    return null;
}
5
задан Ian Boyd 31 December 2008 в 14:46
поделиться

3 ответа

Это - общий вопрос с довольно сложным ответом. Mary Lee MSFT является большим ресурсом для получения информации об этом:

http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx

Используя ClickOnce для развертывания является самым близким, Вы собираетесь добраться до установки XCopy любого приложения, основывался на VSTO.

Кроме того, проверьте это сообщение:

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/

Наконец, у Misha есть большой блог:

http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

PIAs характерны для версии Office, для которого Вы нацелены, таким образом, PIAs 2003 года будут необходимы для предназначения для 2003, и PIAs 2007 года необходимы на 2007. Автоматизация Office 95 с помощью управляемого кода является чем-то, что я не сделал прежде, но я могу предположить, что Вы непосредственно ссылаетесь на библиотеки типов, таким образом, RCW сгенерирован для Вас и не имеет никакого отношения к PIAs.

HTH

Colby Африка (MSFT)

4
ответ дан 14 December 2019 в 13:50
поделиться

Если мне удастся получить копию сборок взаимодействия от Microsoft, могу ли я просто скопировать их в папки Bin / Debug и Bin / Release?

У меня это сработало. Когда я скомпилировал программу, она ссылалась на библиотеки взаимодействия (PIA) в корзине, а затем развернула ее таким образом для клиента.

Если я включу сборки взаимодействия Office 2007, будет ли это работать, если у клиента установлен Office 95 ?

Нет, у вас должны быть библиотеки взаимодействия для той версии Word, на которую вы нацеливаетесь. Я полагаю, можно было бы написать свой код, чтобы он проверял версию слова, работающего на этой машине, и во время выполнения выбирал правильное взаимодействие, но вам нужно включить их все.

0
ответ дан 14 December 2019 в 13:50
поделиться

Из моего собственного опыта:

Если вы хотите настроить таргетинг на Office 2003 и выше, вы должны использовать Office 2003 PIA - и ограничиться API Office 2003. Код будет работать в Office 2003 или более поздней версии . Вы все еще можете вызывать функции Office 2007 с помощью отражения, но это неприятно.

Я полагаю, что это примерно та же история, если ваша базовая версия - Office 2000 - хотя я не пробовал и полагаю, что это самая ранняя версия, для которой Microsoft сами предоставляют PIA - это Office 2002 (XP).

Вы можете создавать свои собственные сборки Interop для 2000 года, и у меня нет оснований полагать, что вы не сможете этого сделать в 1995 году, хотя вы первый человек, которого я когда-либо видел, прося поддержки в 95 году! Само собой разумеется, что если вы создаете свои собственные сборки Interop, вы вам нужно будет развернуть их вместе с вашим приложением.

В любом случае, вы хотите использовать самую высокую версию Office, с которой вы можете уйти, в качестве базовой, чтобы вы могли поддерживать как можно больше функций не прибегая к размышлениям. Вам следует разработать свой код на машине, на которой установлена ​​ только эта версия Office.

В моем случае я разрабатываю для Office 2003 и знаю, что у моих пользователей тоже есть 2003. Итак, я прошу их убедиться, что у них включена функция «Поддержка программирования .NET» (которую вы можете сделать через установку Office 2003 через Установка и удаление программ, если вы выбрали вариант «Изменить»). Этот вариант в основном устанавливает PIA в GAC. Для тех пользователей, которые не могут этого сделать, моя программа установки обнаруживает отсутствие PIA и устанавливает их перед установкой моего приложения (как и для. NET framework).

Развертывание XCOPY? Да, я бы тоже этого хотел, но забудьте об этом. Во-первых, если ваша надстройка будет работать в режиме «высокой» безопасности, вам понадобится подписанная кодом «прокладка» COM, которая будет находиться между вашим кодом и Office, и ее необходимо зарегистрировать. Я считаю, что VSTO предоставляет собственную прокладку, если вы решите пойти по этому пути (я этого не сделал, поскольку мне нужно было иметь возможность «управлять» Office с нуля, а не полагаться на запуск приложения пользователем)

. Развертывание - и решение проблем с установкой и безопасностью - является одной из самых сложных частей разработки надстроек Office с помощью .NET, и очень приятно, что это происходит в самом конце, когда вы думали, что закончили.

Мои сильный совет - избавь себя от многих дней и недель хлопот, и посмотрите Надстройку Express . Я только недавно столкнулся с этим и с тех пор пинал себя, потому что это могло сэкономить мне так много времени. У него есть несколько преимуществ, которые, я думаю, будут вам полезны:

  1. Он позволяет вам создать единую надстройку, ориентированную на Office 2000 и Office 2007 (извините, не 95), независимо от того, какая версия у вас установлена ​​на вашем компьютере. ПК разработки.
  2. Он создает для вас установщик (который работает даже в Vista!), который сам по себе стоит своей цены.
  3. Он поставляется со своей собственной прокладкой COM и интегрирован в той степени, в которой вы этого не делаете. не нужно беспокоиться об этом.
  4. Это позволит вам иметь единственную надстройку с интерфейсом меню / панели инструментов в версиях Office до 2003, но с ленточным интерфейсом в 2007 году.

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

2
ответ дан 14 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: