Основные сборки взаимодействия Office не работают после установки пакета совместимости 2007 - PullRequest
5 голосов
/ 21 мая 2009

У меня была программа на C #, которая немного автоматизировала Word и Excel, и она использовала основные сборки взаимодействия с Office 2003. Я развернул его, включив Interops в мусорное ведро, и моя программа ссылалась на него оттуда, а не на ссылку из GAC (не очень профессионально, но она работала несколько лет). Недавно на 3 компьютерах был установлен пакет совместимости с Office 2007, и теперь, когда мое программное обеспечение пытается вызвать Word или выдать сообщение об ошибке, я получаю сообщение об ошибке:

Невозможно привести объект COM типа Microsoft.Office.Interop.Word.ApplicationClass к типу интерфейса Microsoft.Office.Interop.Word.Application. Эта операция завершилась неудачно, поскольку вызов QueryInterface в компоненте COM для интерфейса с IID { 00020970-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: Библиотека не зарегистрирована. (Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTRurable))

После некоторых поисков я заметил, что установка пакета совместимости Word11 и Word12 была установлена ​​в GAC и одинакова с Excel.

Я попытался сделать так, чтобы моя программа ссылалась на взаимодействие Word11 в GAC, но все еще не помогала. Я удалил взаимодействие Word12 и до сих пор не помог. Кажется, что установка этого, казалось, изменила некоторые настройки реестра или что-то, что мое программное обеспечение перепутало, не может найти правильную библиотеку.

У кого-нибудь есть идеи?

Ответы [ 2 ]

3 голосов
/ 16 сентября 2009

Недавно у меня тоже возникла эта проблема со словом, и я обнаружил этот ключ реестра как виновного

HKEY_Classes_Root\TypeLib\{00020905-0000-c000-000000000046}\8.4

По-видимому, это говорит слову использовать интроп-сборки Word 2007 вместо Word 2003 (8.3). По крайней мере, я думаю, что я не слишком знаком с офисными интропами. Я удаляю ключ реестра и все работает как обычно. Я не знаю каких-либо побочных эффектов от удаления этого ключа, но обязательно сделаю резервную копию.

1 голос
/ 21 мая 2009

Я обошел эту проблему, скопировав более ранние версии из GAC в нашу папку сторонних библиотек, и сослался на них там - это также означает, что вы можете собрать против 2003 с только 2007 установленным. (и да, я знаю, что это действительно грязный хак)

...