У меня есть приложение C # WPF (.NET 4.0), которое использует взаимодействие Excel для чтения данных из файла Excel.
Когда я запускаю это приложение на моей машине для разработки с Excel 2007, оно работает нормально. Когда я запускаю его на другом компьютере, на котором установлен Excel 2010, происходит сбой со следующим сообщением об ошибке:
System.Runtime.InteropServices.COMException (0x80040154): Сбой при получении фабрики классов COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Ошибка возникает при попытке создать объект Microsoft.Office.Interop.Excel.Application
, например:
var app = new Application();
Мой проект имеет ссылку на Microsoft.Office.Interop.Excel.dll
(версия 14.0.0.0, среда выполнения v2.0.50727), которая находится по адресу:
C: \ Program Files \ Microsoft Visual Studio 10.0 \ Инструменты Visual Studio для Office \ PIA \ Office14 \ Microsoft.Office.Interop.Excel.dll
Я попытался запустить приложение с настройками по умолчанию на указанной DLL:
- Копировать локально = Ложь
- Типы вставок взаимодействия = True
- Специальная версия = True
Я также попытался запустить приложение со следующими настройками на указанной DLL:
- Копировать локальный = True
- Вставить типы взаимодействия = Ложь
- Специальная версия = True
Но на компьютере с Office 2010 ни одна из этих попыток не сработала.
Другие примечания. Компьютер с Office 2010 - 64-разрядная с Windows 7. Мой компьютер для разработки - X86 с Windows XP.
Вопрос
Что вызывает исключение "класс не зарегистрирован" и как его исправить?
Редактировать
В ответ на ответ Алекса я попытался собрать приложение под Any CPU, X86 и X64, но это не имело никакого значения. Я все еще получаю ту же ошибку "класс не зарегистрирован".
Редактировать 2
Только что попробовал приложение на 32-битной машине с Office 2010. Никаких ошибок. Таким образом, это может быть что-то не так с конкретной машиной, или это может быть комбинация 64-битной и Office 2010.
Редактировать 3
Хорошо, теперь я проверил его на другом 64-битном компьютере с Office 2010. Опять без ошибок. Я думаю, что это означает, что что-то не так с конкретной машиной, и это не вина моего программного обеспечения. Ааа, программирование.