2009-03-30 2 views
1

Мы хотим разработать дополнения для Outlook, Excel и Excel. На данный момент я знаю о двух типах решений. Один из них - для совместной надстройки (на основе COM) и других для создания надстройки на основе VSTO. Как я новичок в этом, что было бы лучшим вариантом? (Или, если есть третий способ, пожалуйста, дайте мне знать) Мы ориентируемся на Office 2003 и 2007 оба. И я предпочел бы развивать это дополнение в C#.Office (особенно Outlook) addins

+0

Спасибо за ответы. Похоже, вы пойдете на Vb.Net и COM на основе Addin, поскольку я обнаружил, что VSTO имеет больше требований к настройке и также не нейтрален для версий. –

ответ

2

Если вы собираетесь разрабатывать C#, я настоятельно рекомендую придерживаться VSTO. У этого есть намного более простая инфраструктура добавления-разработки и отлично работает с C#.

Выполнение маршрута COM, особенно с помощью C#, просто добавляет дополнительную боль, которая не нужна в данный момент.

+0

VSTO действительно замечательный. Но не забывайте, что VSTO Power Tools ;-) http://www.microsoft.com/downloads/details.aspx?FamilyId=46B6BF86-E35D-4870-B214-4D7B72B02BF9&displaylang=en – Gregor

3

Непосредственно ответ на ваш вопрос, но также стоит рассмотреть перед началом разработки надстройки: как уже говорил Рид, при разработке надстройки Office с использованием VB.Net жизнь станет намного проще, чем использование C#.

Вызов в объектной модели Office обычно оставляет несколько необязательных параметров. Однако в C# - поскольку C# еще не имеет необязательных параметров - вам нужно будет указать каждый из необязательных параметров. Недостаточно, для надстроек COM вам также придется самостоятельно позаботиться о боксах, т. Е. Вместо передачи простого bool или int вам нужно сначала преобразовать его в ссылочный тип. Все это делает код довольно нечитаемым.

E.g. код, чтобы открыть документ в слово будет выглядеть, что в C#:

object objTrue = true; 
object objFalse = false; 
object missing = Type.Missing; 
object objInputFile = strInputFile; 
Document document = WordApplication.Documents.Open(ref objInputFile, 
    ref objFalse, ref objTrue, ref objFalse, ref missing, ref missing, 
    ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref objFalse, ref missing, ref missing, ref objTrue, ref missing); 

, тогда как то же самое в VB.Net было бы гораздо легче читать и писать:

Document document = WordApplication.Documents.Open(strInputFile) 

(Дополнительная информация: С C# 4.0 это станет намного проще с использованием dynamic)

+0

Ничего себе, это действительно раздражает! Хорошо знать! :-) –