これが私の問題です:
クラスとSystem
名前空間を含む DLL ライブラリ (.NET フレームワークからではない) を使用しています。Tuple
Lazy
プロジェクトをコンパイルしようとすると、コンパイラは、これらのクラスがmscorlib.dll
別の DLL に存在することを示すいくつかのエラーをスローします。
では、他の DLL への参照を削除せずに、.NET Framework のクラスを使用するにはどうすればよいでしょうか。
これが私の問題です:
クラスとSystem
名前空間を含む DLL ライブラリ (.NET フレームワークからではない) を使用しています。Tuple
Lazy
プロジェクトをコンパイルしようとすると、コンパイラは、これらのクラスがmscorlib.dll
別の DLL に存在することを示すいくつかのエラーをスローします。
では、他の DLL への参照を削除せずに、.NET Framework のクラスを使用するにはどうすればよいでしょうか。
それらが同じ名前空間などを持っている場合、曖昧さを解消する唯一の方法は、を使用すること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
使用しているサードパーティ ライブラリは、.NET 2.0 または .NET 3.5 用に設計されているようです。
サード パーティが .NET 4+ 用の DLLも提供していない場合、私は非常に驚くでしょう。ターゲット フレームワーク バージョン用の DLL を置き換えて再構築するだけでよいのではないかと強く思います。