Мы хотим разработать надстройки для Outlook, Word и Excel. На данный момент я знаю 2 типа решений. Один для общей надстройки (на основе COM), а другой для создания надстройки на основе VSTO. Поскольку я новичок в этом, какой вариант будет лучше? (Или, если есть третий способ, пожалуйста, дайте мне знать) Мы ориентируемся на Office 2003 и 2007. И я бы предпочел разрабатывать эти надстройки на С#.
Надстройки Office (особенно Outlook)
Ответы (2)
Непосредственный ответ на ваш вопрос, но его также стоит рассмотреть перед началом разработки надстройки: как уже сказал Рид, при разработке надстройки Office с использованием VB.Net жизнь будет намного проще, чем с использованием C#.
Вызов объектной модели Office обычно не включает несколько необязательных параметров. Однако в C#, поскольку в C# (пока) нет необязательных параметров, вам придется указать каждый необязательный параметр. Недостаточно, для надстроек COM вам также придется позаботиться о упаковке аргументов самостоятельно, то есть вместо передачи простого логического или int вы должны сначала преобразовать его в ссылочный тип. Все это делает код совершенно нечитаемым.
Например. код для открытия документа в Word будет выглядеть так же, как в 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 это станет намного проще, используя динамический)
Если вы собираетесь разрабатывать на C#, я настоятельно рекомендую придерживаться VSTO. Он имеет гораздо более простую структуру разработки надстроек и отлично работает с C#.
Использование COM-маршрута, особенно с C#, просто добавляет дополнительных усилий, которые на данный момент не нужны.