1

.net 4、c# プロジェクトをビルドしようとすると、エラーが発生します。すべてがうまく機能しますが、特定の DLL に外部参照を追加すると、動作が停止し、ビルドできず、このタイプのエラーがスローされます。

エラー 36 タイプ 'System.Tuple' は 'C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll' と 'C:\Projects\Project1\ExternalRefernces\SharpSNMP\SharpSnmpLib の両方に存在します.dll' C:\Projects\Project1\CheckerStore.cs 17 21

新しいライブラリでは何もしていないことに注意してください。参照として追加しただけです。何か案は?

4

4 に答える 4

8

この問題は、外部エイリアスを指定することで解決できます。プロジェクトでSharpSNMPリファレンスを選択します。プロパティウィンドウAliasesで、からに変更globalしますSharpSNMP。コードにこれを入力します

extern alias SharpSNMP;

...

System.Tuple<T1,T2> sysTulpe;
SharpSNMP::System.Tuple<T1,T2> sharpTulpe;

また

extern alias SharpSNMP;

using SharpSystem = SharpSNMP::System;

...

System.Tuple<T1,T2> sysTulpe;
SharpSystem.Tuple<T1,T2> sharpTulpe;

エイリアス:名前の競合の克服パート2:externエイリアスを参照してください。

于 2012-05-31T21:39:22.343 に答える
6

できることは、ターゲット バージョンを 3.5 に変更するか、SharpSNMPLib にいくつかの変更を加えることです。ソースはhereまたはhereから取得できます。

必要な変更は、特に System.Tuple タイプを別の場所に移動することです。

編集:
コンパイル済みのDLLへの参照を追加したと思います。フレームワーク バージョン 4 用にコンパイルされていない DLL。ソース コードをダウンロードし (上記のリンクを参照)、ターゲット バージョン 4 でプロジェクトをコンパイルする必要があります。

これを行う必要があるのは、フレームワークのターゲット バージョンに応じて条件付きビルド パラメーターがあるためです。SharpSNMPLib System.Tuple はバージョン <= 3.5 に使用され、フレームワーク System.Tuple はバージョン >= 4 に使用されます。

編集:

  • フレームワーク System.Tuple および SharpSNMPLib.dll を使用して問題を再現しました。

  • バージョン 4 を対象とした SharpSNMPLib のビルドに成功しました。

  • フレームワーク System.Tuple と新しい SharpSNMPLib.dll を使用して、アプリケーションのビルドに成功しました。

于 2012-05-31T21:33:28.257 に答える
1

ライブラリは何らかの理由でいくつかのシステム タイプを再実装します。古いバージョンのフレームワークを使用する場合、コードをソース レベルで互換性を持たせることが理由として考えられます。

ほとんどの場合、4.0 フレームワークで動作するこの SharpSNMP ライブラリのバージョンがあります。ソースツリーにすでに正しいものがあるかどうかを確認してください。ライブラリの作成者に、特定のフレームワーク バージョンで使用する必要があるアセンブリのバージョンと、推奨される方法を確認してください。

于 2012-05-31T21:34:11.977 に答える
1

ファイルの 1721 行目に移動するだけCheckerStore.csです (私が正しければ)。Tupleクラスを見つけて、その完全修飾名を使用して参照します。

于 2012-05-31T21:17:39.753 に答える