私はこのようなADOBD.Recordsetオブジェクトを読み込もうとしています(初めてなので、「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を実行することで確認したいくつかのデータでRecordsetを取得します。しかし、コードがcategory.Fieldsに到達すると、次の例外が発生します。
アセンブリ 'TestCOMCalls、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'からタイプ 'ADODB.FieldsToInternalFieldsMarshaler'をロードできませんでした。
私はこのエラーをグーグルで検索しました(または「ADODB.FieldsToInternalFieldsMarshaler」だけで問題を解決するのに役立つものを見つけることができませんでした)。
参照がありませんか?通常の参照の他に、これをプロジェクトに追加しました:
ADODB Microsoft ActiveX Data Objects 2.5 Library C:\ WINDOWS\Assembly\GAC\ADODB\7.0.3300.0__b03f5f7f11d50a3a\ADODB.dll
私が言ったように、私はこれまでこれをやったことがありませんが、少しグーグルすることで、これをしている人たち(object.Fieldsでforeach)を見ることができ、彼らのために機能しているようです。
どんな助けや指示も大歓迎です:)
ありがとう!
わかりました、これを行う方法を考えました:
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();
}
プロジェクトのプロパティではなく、個々の参照にあります。ソリューションエクスプローラーウィンドウで(プロジェクトの下にある)[参照]を開き、問題の参照をクリックします。プロパティウィンドウには、(相互参照の)埋め込み相互運用機能タイプのオプションがあります。
Visual BAsic 2010の場合:
Embed Interop Typesをオフにするには:
プロジェクトメニュー>すべてのファイルを表示、ソリューションエクスプローラー:>参照:> ADODB> Interofタイプの埋め込み= False。 Microsoft.Office.Interop.Access> Interofタイプの埋め込み= False
これで公開できるようになり、次の場所にもADODBが表示されます。[プロジェクトメニュー]> [プロジェクトのプロパティ…公開]タブ> [アプリケーションファイル]
解決済み:
ソリューションエクスプローラー->すべてのファイルを表示(メニュー項目)->リファレンス-> Adodb->(プロパティ)-> Embed Interop Types-> False。
この質問で私が見つけたことをここで確認してください。私はあなたのものを参照しましたが、それでもADODBを機能させることができませんでした。
追加する小さなもの:
SolutionExplorer->すべてのファイルを表示します。 ADODBの場合:-埋め込み... = False; -ローカルをコピー= True。
VS 2013でも同じ問題が発生しました。その解決策は、参照に移動してADODBを選択することです。プロパティで、Embed Interof types = Trueと表示され、それをfalseに変更します。
一時ファイルをクリアするこの問題が発生しました(VS 2017)。この例外の解決策は、変更する必要がありますSolution Explorer > References > adodb > "Then Right click and choose properties" > Embed Interop Types, set "True" to "False"