3

これが私の問題です:

クラスとSystem名前空間を含む DLL ライブラリ (.NET フレームワークからではない) を使用しています。TupleLazy

プロジェクトをコンパイルしようとすると、コンパイラは、これらのクラスがmscorlib.dll別の DLL に存在することを示すいくつかのエラーをスローします。

では、他の DLL への参照を削除せずに、.NET Framework のクラスを使用するにはどうすればよいでしょうか。

4

3 に答える 3

7

それらが同じ名前空間などを持っている場合、曖昧さを解消する唯一の方法は、を使用することextern aliasです。ソリューションエクスプローラーで、Aliasesこの不正な参照のプロパティを、たとえばfoo(ではなくglobal)別のプロパティに変更します。

ここで、そのアセンブリの型が必要なクラスファイルに、次のものを追加する必要があります(一番上に)。

extern alias foo;

そして、後でコードの後半で使用できます。

foo::Some.Namespace.TheType

または同等に:

foo.Some.Namespace.TheType

基本的に、エイリアス名は曖昧さ回避の追加レベルになります。参考までに、デフォルトのエイリアスはですglobal。ただし、コンパイラはこれで問題ありませんが、VS2012 IDEにはまだいくつかの問題があることに注意してください:https : //connect.microsoft.com/VisualStudio/feedback/details/770464/ide-but-not -compiler-incorrectly-reports-an-error-when-using-extern-alias-to-disambiguate-typesextern alias

于 2012-11-13T13:48:45.470 に答える
5

使用しているサードパーティ ライブラリは、.NET 2.0 または .NET 3.5 用に設計されているようです。

サード パーティが .NET 4+ 用の DLLも提供していない場合、私は非常に驚くでしょう。ターゲット フレームワーク バージョン用の DLL を置き換えて再構築するだけでよいのではないかと強く思います。

于 2012-11-13T13:47:26.190 に答える
3

これはおそらく、.NET 2 または 3.5 を対象としたライブラリであり、.NET 4 機能 (TupleおよびLazy) の独自の実装が追加されています。このライブラリの更新された .NET 4 バージョンを探します。

于 2012-11-13T13:47:56.320 に答える