2012-02-13 16 views
1

PresentationFramework.Classicとの両方のアセンブリを参照する必要があり、Microsoft.Windows.Themes.DataGridHeaderBorder型を使用する必要がある状況があります。しかし、両方のアセンブリでこのタイプが定義されているため、これはエラーとなります。 私は、このタイプのもの(ClassicまたはLuna)のいずれかを参照することができます、単純なDatagridで、DataGridHeaderBorderがクリックされているかどうかを確認する必要があります。2つの異なるDLLで同じ完全修飾名を持つ型にアクセスする方法

ありがとうございます。

答えて

2

これはexternal assembly aliasesが対処することを意図している状況の一種です。コマンドラインのコンパイルがあなたのものでない場合は、Visual Studioのリファレンスのプロパティシートの "エイリアス"プロパティを使用して、参照のエイリアスを指定することもできます。完全な例は、http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspxを参照してください。

+0

こんにちは、上記のオプションを試しましたが、これはWPFプロジェクトでは動作しないため、バグとして報告されているため、問題が発生しました。 - [Bug Link](https://connect.microsoft.com/VisualStudio/feedback/details/615953/reference-aliases-ignored-on-projects-containing-some-xaml-files#の詳細)。回避策を試しましたが、このエラーに直面しています - ** Extern alias 'Classic'は/ referenceオプションで指定されていませんでした** –

+0

これはWPFを使用しない場合にのみ有効な助けとなりました。私はこれについてたくさん読んできましたが、これはこの種の状況を処理する実際のソリューションですが、このソリューションはWPFアプリケーションでは機能せず、MSによってバグとしてマークされています。これは4.5リリースで解決される予定です。しかし、素晴らしい記事。私は最終的にアセンブリ参照の1つを削除し、それを使わずにしようとしています。 –

+0

私はこれを答えとしてマークします。 –

3

はこれを試してみてください:

using Clasic = PresentationFramework.Classic; 
using Luna = PresentationFramework.Luna; 



namespace Test1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Clasic.Microsoft.Windows.Themes.DataGridHeaderBorder bClassic; 
      Luna.Microsoft.Windows.Themes.DataGridHeaderBorder bLuna; 
     } 
    } 
} 
+0

私にとってはうまくいきません。それは_タイプまたは名前空間の名前 'PresentationFramework'が見つかりませんでした(あなたはusingディレクティブかアセンブリリファレンスですか?)_、私は両方のアセンブリ参照を含んでいますが。 –

+0

名前空間は適切ですか?ソースClassおよびLunaアセンブリを検証/検証し、名前空間が一致し、他の名前空間にルートされていないことを確認します。アセンブリ名は名前空間と一致する必要はありませんが、通常これが該当します。 – codechurn

+0

@Art - 私は検証しましたが、名前空間は他のものに根ざしていません。両方のアセンブリのルート名前空間はMicrosoft.Windows.Themesです。 WPFでこれを試しましたか?** WPFアプリケーション**ですか? –

関連する問題