10

「MyTest.TestApplication」と呼ばれる WPF アプリケーションと「MyTest.ClassLibrary」と呼ばれるクラス ライブラリの 2 つのプロジェクトを含むソリューションがあり、対応するデフォルトの名前空間があります。MyTest.TestApplication には、MyTest.ClassLibrary への参照があります。MyTest.ClassLibrary には、MyTest.ClassLibrary.TestClass というクラスが含まれています。このクラスのインスタンスをアプリケーションのリソースに追加したいのですが、URL を Xml 名前空間の値として使用します。

そこで、MyTest.ClassLibrary.AssemblyInfo.cs を開いて、

using System.Windows.Markup

ディレクティブ、そして最後に次の行を追加します

[assembly: XmlnsDefinition("http://schemas.test.com/test", "MyTest.ClassLibrary")]

プロジェクトをビルドし、MyTest.TestApplication.App.Xaml に移動して、名前空間の定義を Application 要素に追加します。xmlns:t=" と入力するとすぐに、アセンブリ名と URI のインテリセンス リストが表示されますが、http://schemas.test.com/testは表示されません。とにかく名前空間の定義を追加すると、次のようになります。

xmlns:t="http://schemas.test.com/test"

Resources 要素に以下を追加します。

<t:TestClass x:Key="myTest" />

そのリソースは作成されず、Xaml エディターはクラス TestClass が名前空間http://schemas.test.com/testに存在しないと不平を言います。

イライラすることに、WpfCustomControlLibrary1 というデフォルトの WPF カスタム コントロール ライブラリを追加し、次の行を追加しました。

[assembly: XmlnsDefinition("bluh", "WpfCustomControlLibrary1")]

WpfCustomControlLibrary1.AssemblyInfo.cs に対して、プロジェクトをビルドし、MyTest.TestApplication でそれを参照し、App.xam で xmlns:b=" と入力し始めるとすぐに、IntelliSense は一番上に "bluh" を含む名前空間のリストを表示します.

あらゆる種類のアセンブリを追加し、MyTest.ClassLibrary にディレクティブを使用しようとしましたが、スキーマ URL を介して Visual Studio でアセンブリを見つけることができません。驚くべきことに、次のように名前空間をアセンブリ名に設定すると機能します。

xmlns:t="clr-namespace:MyTest.ClassLibrary;assembly=MyTest.ClassLibrary"

それで..ここで何が起こっているのですか?

編集:イライラすることに、WPFアプリケーションから参照を削除してから再度追加するだけで、2時間検索した後、ようやく機能するようになりました。うーん。これはVS2012のバグの一種だと思いますか?

4

2 に答える 2