Переключение между конфигурациями платформы нарушает COM-совместимость

#visual-studio-2008 #com

#visual-studio-2008 #com

Вопрос:

У меня снова довольно странная проблема с Visual Studio. У меня есть библиотека, которая зависит от одной COM-библиотеки. Ни с того ни с сего COM-библиотека, зависящая от MDAC 2.7, внезапно1 выдала эту ошибку компиляции:

 Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
  

Вместе с этой ошибкой другие показали, что свойства не были найдены для указанного объекта. После тщательного изучения моей системы я смог выяснить, что по какой-то причине некоторые библиотеки MDAC больше не были зарегистрированы2. Регистрация их вручную (поскольку программа установки больше не позволяла мне ее переустанавливать) исправила ошибку, но ошибки о не найденных свойствах остались. Это сводилось к следующему:

 Me.prv_comObject.Value = aValuePassedIn ' This throws the error that the
                                          Property "Value" could not be found '

' This works instead: '
Me.prv_comObject.set_Value(aValuePassedIn)
  

Теперь приходит подсказка, это нарушает только x86 конфигурацию, в Any CPU я все еще могу использовать свойства. Я также не смог воспроизвести это с помощью SharpDevelop, SD всегда ожидает свойства. Я также не уверен, связано ли это каким-либо образом с MDDAC-Thingy.

Это VB.NET проектом является библиотека COM VB6, а ОС — Windows XP. Есть идеи, что может вызвать такое поведение?

1: Да, внезапно. Я обычно разрабатывал, затем переключился в Release режим, и тогда это было там и больше не уходило.

2: Да, я возился с MDAC, потому что я пытался помочь точно определить проблему, которая теперь появилась с Windows 7 SP1 (да, мы не знали об этом). Но я не возился с регистрацией библиотек MDAC.

Ответ №1:

После трех дней размышлений, что это такое, оно исчезло.

Я очистил проекты, удалил obj и bin , и внезапно все вернулось к нормальной жизни. Похоже, что объектные файлы были повреждены.