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();
}