ADODBCould не загружать тип ' ADODB.FieldsToInternalFieldsMarshaler ' из сборки

Я пытаюсь прочитать ADOBD.Объект набора записей, как это (мой первый раз, так что простите мою "noobness": D):

Presentation.Category categorySvc = new Presentation.Category();
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128);
foreach (var category in categories.Fields) // here is where I get the exception
{
   // ...
}

вызов ListAll работает нормально - я получаю набор записей с некоторыми данными, которые я подтверждаю, делая QuickWatch на объекте. Но когда код достигнет категорий.Поля, я получаю следующее исключение:

не удалось загрузить тип 'Объект adodb.FieldsToInternalFieldsMarshaler' из TestCOMCalls сборку, Версия=1.0.0.0, культуры=нейтральный, Значения PublicKeyToken=нуль'.

я погуглил эту ошибку (или просто ' ADODB.FieldsToInternalFieldsMarshaler ' и не смог найти ничего, что помогло бы мне с проблемой).

интересно, я пропустил ссылку? Помимо обычных ссылок, я добавил этот в свой проект:

объект adodb Библиотека Объектов Данных Microsoft ActiveX 2.5 C:WINDOWSassemblyGACADODB7.0.3300.0__b03f5f7f11d50a3aADODB.dll файлы

Как я уже сказал, я никогда не делал этого раньше, но, немного погуглив, я смог увидеть, как некоторые люди делают это (foreach на объекте.Fields), и это, похоже, работает для них.

любая помощь или направление очень ценится :)

спасибо!

5 ответов


Это по отдельным ссылкам-не в свойствах проекта. В окне обозреватель решений откройте "ссылки" (в разделе Проект) и нажмите на соответствующую ссылку. Окно Свойства будет иметь опцию для встраивания типов взаимодействия (для каждой ссылки).

В Visual BAsic 2010:

чтобы отключить типы взаимодействия Embed:

меню проекта > показать все файлы, Обозреватель решений: > ссылки: > ADODB > внедрить типы взаимодействия = False. Microsoft.Офис.Взаимодействие.Access > Embed Interof types = False

теперь вы сможете публиковать, а также ADODB появится в меню: проект > свойства проекта ... вкладка публикация > файлы приложений


решила:

Обозреватель решений --> показать все файлы(пункт меню) --> Ссылки --> Adodb -->(свойства) -->внедрить типы взаимодействия --> False.


посмотрите,что я нашел по этому вопросу здесь. Я ссылался на ваш, но все еще не мог заставить ADODB работать.

маленькое добавление:

SolutionExplorer --> Просмотреть Все Файлы. Для ADODB: - Внедрять... = Ложный; - Копировать Local = True.


получил ту же проблему в VS 2013, и решение заключается в том, что вы идете в Ссылки и выберите ADODB, в свойствах вы увидите Embed Interof types = True затем измените его на false.


ладно, я понял, как это сделать:

Presentation.Category categorySvc = new Presentation.Category();
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128);
categories.MoveFirst();
while(!categories.EOF)
{
    var fields = ((dynamic)categories).Fields;
    for (int i = 0; i < fields.Count; i++)
    {
        var field = fields[i];
        var name = field.Name;
        var value = field.Value;
        // ...
    }
    categories.MoveNext();
}