Чтобы получить значение индекса, вы можете просто привести перечисление к 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;
}
Это - общий вопрос с довольно сложным ответом. 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)
Если мне удастся получить копию сборок взаимодействия от Microsoft, могу ли я просто скопировать их в папки Bin / Debug и Bin / Release?
У меня это сработало. Когда я скомпилировал программу, она ссылалась на библиотеки взаимодействия (PIA) в корзине, а затем развернула ее таким образом для клиента.
Если я включу сборки взаимодействия Office 2007, будет ли это работать, если у клиента установлен Office 95 ?
Нет, у вас должны быть библиотеки взаимодействия для той версии Word, на которую вы нацеливаетесь. Я полагаю, можно было бы написать свой код, чтобы он проверял версию слова, работающего на этой машине, и во время выполнения выбирал правильное взаимодействие, но вам нужно включить их все.
Из моего собственного опыта:
Если вы хотите настроить таргетинг на 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 . Я только недавно столкнулся с этим и с тех пор пинал себя, потому что это могло сэкономить мне так много времени. У него есть несколько преимуществ, которые, я думаю, будут вам полезны:
Обратите внимание, что я не связан с Add-in Express (кроме как недавний клиент), но в равной степени я еще не преобразовал свои проекты для его использования. Первые тесты, которые я провел, убедили меня в том, что он довольно хорош - и определенно подходит для малых и средних проектов.