2012-08-01 13 views
6

私はシルバーのC#のアプリを開発しています、と私はマイクロソフトDLLへの参照を追加し、次のメッセージ持っている:XXは、両方のDLLに存在する型

タイプは、両方のDLLに存在し

私は両方のDLLで定義されたコントロールを使用しています(1つはSDKに関連付けられていますが、もう1つは自分自身を追加しました)。

インターネットでいくつかの調査をした後、両方のDLLのエイリアスを作成し、extern alias <alias_name>を使用してインポートしようとしました。このアプローチは、xaml.csコードの背後にある問題を解決しましたが、実際にxamlの問題を解決しませんでした。私がこれをした後、Visual Studioは、(私が追加したDLLからの)コントロールの1つが名前空間に定義されていないと訴えました。

別名を使用してXMLに名前空間を指定する方法があるのでしょうか?

ありがとうございます。

+0

をあなたはframework_で使用される_sameのsamespaceと制御を開発している、それはありますか?どうして? – devundef

+0

いいえ開発中ではなく、使用している2つのDLLで定義されているコントロールを使用しています。 –

答えて

4

Stackoverflow

MSDN

あなただけのコンマ区切り文字を使用してアセンブリに2つ目のエイリアスを追加する必要があります。

例えば

<Aliases>global,alias_name</Aliases> 

XAMLは、グローバルエイリアスを使用します、そして、あなたのクラスで選択し、選択することができます。

あなたは、基本的には、一つの場所にI think this solution is the only one.

を両方のアセンブリを使用して、必要な各クラスのためにあなた自身のプロジェクトで、別の名前空間に2つのラッパークラスを作成し、その後、代わりに競合アセンブリのラッパーの名前空間を参照する必要がある場合。

+0

こんにちは、ありがとう、私はこのアプローチを試みたが、それは私にprobleを解決するようには思われません。 xamlコントロール要素(コントロール 'LL'を呼び出すことができます)は両方のdllで定義されていますので、xamlで使用されている' LL'コントロールを指定するようなものを作成したいのですが、dllではなく、コントロールの名前空間を指定する別の機会があると思います。ありがとうございました –

+0

代替手段を見つけました... –

+0

これは少しハッキーのようですが、ありがとう! –

2

あなたが(ないXAMLで)C#コードで重複namespaeからクラスを使用する場合の良い方法はあり http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html

は、外部アセンブリのエイリアスを使用してください。 DLL参照の "エイリアス"プロパティを指定します。

  1. Visual Studioソリューションエクスプローラで、参照フォルダを開きます。
  2. DLL参照を右クリックし、[プロパティ]を選択します。
  3. "エイリアス"プロパティにエイリアス値を入力します。
  4. 例:MyDLLv1.dll参照へのエイリアスは、 "LegacyMyDLL"とすることができます。

C#のソースコードにエイリアスを指定します。

// Old way 
using MyNamespace; 

// New way 
extern alias LegacyMyDLL; 
using LegacyMyDLL.MyNamespace; 
関連する問題