SilverLight3で共通のページをクラスライブラリ化しようと思い、xamlのプログラムをクラスライブラリのプロジェクトへコピーしました。

namespaceとかを修正して、コンパイルするとすると「名前 ‘InitializeComponent’ は現在のコンテキスト内に存在しません。 」のエラーが発生するようになりました。ほかにも画面に配置したコントロールも見つからないとエラーが出てます。

いろいろ調査してみると、隠しフォルダーにあるfogefoge.g.csが正しく再作成されてないことを見つけました。 (例:ソルーション\プロジェクト\obj\Debug\fogefohe.g.cs)通常は、xamlを修正すれば、コンパイル時に自動的に再作成されるはずなのですが・・・

いろいろ調べていくと・・・見つけました。^^v

zamlのプロパティ

xamlプログラムをクラスライブラリーにコピーすると、xamlのプロパティ内の「ビルドアクション」がPage →ApplicationDefinitionに勝手に変更されています。その結果、その後のコンパイルでfogefoge.g.csが正しく再作成されないようです。

ここまでわかれば修正は簡単です。このビルトアクションをPageに戻してやれば正常にコンパイルできるようになりました。

めでたしめでたし^^