Написал программу для обработки вордовского документа. У меня установлен Word 2003, соответственно при разработке использовалась библиотека Office 11 Object library.
У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
Здравствуйте, Cyberdrill, Вы писали:
C>Проблема такая:
C>Написал программу для обработки вордовского документа. У меня установлен Word 2003, соответственно при разработке использовалась библиотека Office 11 Object library.
C>У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
Здравствуйте, Cyberdrill, Вы писали:
C>У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
А может все гораздо проще и на машине с Word 2000 действительно нет какой-то нужной dll? Что в исключении написано?
Здравствуйте, Cyberdrill, Вы писали:
C>Проблема такая:
C>Написал программу для обработки вордовского документа. У меня установлен Word 2003, соответственно при разработке использовалась библиотека Office 11 Object library.
C>У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
При помощи утилиты tlbimp сгенерировать интероп для минимальной версии ворда которую ты собираешся использовать. Далее использовать этот интероп (ставить его с программой). Он так же нормально будет работать и со старшими версиями.
Здравствуйте, DiRTy GaRRy, Вы писали:
DG>При помощи утилиты tlbimp сгенерировать интероп для минимальной версии ворда которую ты собираешся использовать. Далее использовать этот интероп (ставить его с программой). Он так же нормально будет работать и со старшими версиями.
т.е. сейчас мне остается убить ссылку на библиотеку 2003 оффиса и поставить новую сгенерированную? Затем подогнать методы, И все будет работать как с 2000 оффисом, так и выше?
Здравствуйте, Cyberdrill, Вы писали:
C>У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
Работу с вордом вынести в отбельную сборку, которую переписать на VB.NET с использованием late binding
Здравствуйте, Cyberdrill, Вы писали:
A>>А может все гораздо проще и на машине с Word 2000 действительно нет какой-то нужной dll? Что в исключении написано? C>Нет, все именно так вот сложно ) ...
Что, так трудно было написать сообщение об ошибке? Как хотите, я с помощью не навязываюсь.
Здравствуйте, Cyberdrill, Вы писали:
C>Здравствуйте, DiRTy GaRRy, Вы писали:
DG>>При помощи утилиты tlbimp сгенерировать интероп для минимальной версии ворда которую ты собираешся использовать. Далее использовать этот интероп (ставить его с программой). Он так же нормально будет работать и со старшими версиями.
C>Вот наткнулся на этот вариант в интернете: C>http://www.devcity.net/Articles/163/1/article.aspx
C>т.е. сейчас мне остается убить ссылку на библиотеку 2003 оффиса и поставить новую сгенерированную? Затем подогнать методы, И все будет работать как с 2000 оффисом, так и выше?
Этот вариант оказался самым простым. Все работает. Спасибо.
C>У пользователя установлен Word 2000, при работе проги вылетает исключение, что не найдена нужная dllка. Как обойти эту проблему? Поможет ли установка библиотеки 11-й версии в GAC? Допустим я даже установлю сборку, но в C# ведь вызовы методов ворд делаются с полным набором параметров, и в 11 версии число параметров для некоторых функций увеличится ... Вобщем что делать?
Через IDispatch звать. Через рефлекшн получить исходники interop-сборки и проставить флаги на интерфейсах так, чтобы методы вызывались только по DispID. Чистые IUnknown-based интерфейсы выбросить вообще. Тело COM-класса оставить пустым (убрать любую базу), оставить только аттрибуты класса, создать его по new, а затем привести экземпляр к необходимому IDispatch-based интерфейсу.