Adodbc could not load type " ADODB.FieldsToInternalFieldsMarshaler " de l'Assemblée

j'essaie de lire un ADOBD.Objet Recordset comme ceci (ma première fois, donc, pardon pour mon "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
{
   // ...
}

L'appel ListAll fonctionne très bien - j'obtiens le Recordset avec quelques données que je confirme en faisant une QuickWatch sur l'objet. Mais quand le code atteint les catégories.Champs je obtenir de l'exception suivante:

ne pouvait pas charger le type "ADODB.FieldsToInternalFieldsMarshaler" à partir de L'assemblage 'TestCOMCalls, Version = 1.0.0.0, Culture = neutre, PublicKeyToken=null".

j'ai googlé cette erreur (ou juste par 'ADODB.Fieldstointernalmarshaler" et ne pouvait pas trouver quoi que ce soit qui pourrait m'aider avec le problème).

je me demande, est-ce que je manque une référence? En plus des références habituelles, j'ai ajouté celle - ci à mon projet:

ADODB Microsoft ActiveX Data Objects 2.5 Library C:WINDOWSassemblyGACADODB7.0.3300.0__b03f5f7f11d50a3aADODB.dll

comme je l'ai dit, j'ai jamais fait cela avant, mais par googler un peu j'ai pu voir quelques gens qui font cela (foreach sur l'objet.Champs), et il semble fonctionner pour eux.

Toute aide ou d'orientation est très apprécié :)

Merci!

16
demandé sur wdanda 2011-04-14 20:14:36

5 réponses

C'est sur les références individuelles - pas dans les propriétés du projet. Dans la fenêtre Explorateur de solutions, ouvrez "références" (sous le projet), et cliquez sur la référence en question. La fenêtre Propriétés aura une option pour intégrer les types Interop (pour chaque référence).

In Visual BAsic 2010:

Pour désactiver l'incorporation des Types Interop:

menu du projet > afficher tous les fichiers, Explorateur de solutions: > références: > ADODB > Embed Interof types = False. Microsoft.Bureau.Interop.Access > Embed Interof types = False

vous pouvez maintenant publier et aussi ADODB apparaîtra dans le: Menu Projet > Propriétés du projet ... Éditez L'onglet > Fichiers Application

32
répondu Bob 2012-10-17 21:31:21

Résolu:

l'Explorateur de solutions --> Afficher tous les fichiers (Menu) --> Referances --> Adodb -->(propriétés) -->Incorporer les Types Interop --> False.

7
répondu Sushant Rath 2016-02-25 09:00:25

Voir ce que j'ai trouvé sur cette question ici. J'ai fait référence au vôtre, mais je n'ai pas réussi à faire marcher L'ADODB.

un Peu à ajouter:

SolutionExplorer -- > Voir Tous Les Fichiers. Pour ADODB: - Intégrer... = Faux; - Copier Local = True.

6
répondu AndyCODE 2014-03-12 09:42:31

Eu le même problème en VS 2013, et la solution est que vous allez à Références et sélectionnez ADODB, on properties vous verrez Embed Interof types = True puis le changer en false.

3
répondu Peter Mankge 2016-05-17 07:29:49

d'Accord, j'ai compris comment faire:

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();
}
1
répondu wdanda 2011-04-14 17:45:19