2

Firebird データベースで動作する C# .NET 4.0 dll (スタブ/テスト アプリケーションで実行) で奇妙な問題が発生しています。セットアップは正しいようですが、Firebird (2.5.2 だと思います) クライアント/dll/プロバイダーが例外をスローする必要がある場合、常に次のようになります。

エラー: System.TypeLoadException : アセンブリ 'mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' から型 'System.Runtime.CompilerServices.ExtensionAttribute' を読み込めませんでした。

したがって、たとえば、接続文字列を変更して DB ファイルを指さないようにすると、より関連性の高いものではなく、この例外が発生します。これは、Visual Studio 2010 からデバッグするかどうか、または EXE を手動で実行するかに関係なく発生します。

この問題を抱えていない同じコードに取り組んでいる別の人がいるので、コードに関連しているようには見えません。

誰かがこのようなものを見たり聞いたりしたことがありますか? 例外が私に何を伝えようとしているのかを推測しなければならないのは、イライラすることです。

更新: すべてが x86 のように見えるので、ビットのミスマッチではないようです。そして、正しいバージョンのプロバイダー (NETProvider-3.0.2-Net40 など) があることを再確認しました。私はまだ TypeLoadException を取得しています。

参考までに、参考までに、私は Windows XP 32 ビットを実行しています。関連する/実際の例外を取得する他の人は、Windows 7 (おそらく 64 ビット) を使用しています。

4

3 に答える 3

2

問題は、.NET4システムでFirebird.NETプロバイダーの.NET4.5バージョンを使用していることです。Microsoftは、.NET 4.5をインプレース更新し、バージョン4.0.0.0を維持すると同時に、で拡張メソッドを使用できるようSystem.Runtime.CompilerServices.ExtensionAttributeにするなどの作業を行っています。.NET4.5コンパイル済みバージョンが.NET4で実行されている場合、予想とは異なるライブラリにあるため、クラスを見つけることができません。mscorlibmscorlib

結論: http://www.firebirdsql.org/en/net-provider/NETProvider-3.0.2.0-NET40.7zから.NET 4バージョン()をインストールしてください。

この情報は、このブログでも説明されています。

于 2013-02-20T10:25:41.193 に答える
0

通常、ビット数が一致しない場合にこのエラーが発生します。Firebird ドライバー (およびダウンストリームに依存するすべての DLL) と実行可能ファイルの両方が同じビット数に設定されていることを確認してください。

于 2013-02-19T23:28:52.390 に答える
0

さまざまなfirebugプロバイダーのバージョンで試してみましたが、最終的にサーバーマシンで.NETを4.5に更新するとうまくいきました。

.NET 4.5 のダウンロード: http://go.microsoft.com/?linkid=9810134

于 2013-03-11T09:43:03.427 に答える