UIを含むクラスライブラリプロジェクトに必要な参照設定
About / HowTo
コントロールを含むライブラリのためのプロジェクトではなく、通常のクラスライブラリのプロジェクトで開発を開始した場合、PanelやSystem.Windows.Media,Shapes,Inputを利用するためには、プロジェクトの参照設定に次のものを追加しておく必要があります。
- アセンブリ > フレームワーク > PresentationCore
- アセンブリ > フレームワーク > PresentationFramework
- アセンブリ > フレームワーク > System.Xaml
- アセンブリ > フレームワーク > WindowsBase
一見するとPresentationCoreが不要に見えますが、エラーが発生します。ソースコードのクラス名にエラーが表示されている場合には、PresentationCoreへの参照が欠落しているために発生している可能性があります。
新規追加にWindowが表示されない問題とその解決
問題
上記の対応をとっても新規追加の項目に"Window"が表示されない現象が発生します。なおこの現象が発生した状況でも"UserControl"が正常に表示されることは確認できます。
解決
全てのリソースを保存して、VisualStudioを終了します。その後、VisualStudioのプロジェクト構成ファイル(.csproj)をテキストエディタなどから開いて編集します。
検索機能などを利用して、プロジェクト構成ファイルの先頭の方にある"PropertyGroup"項目を見つけます。このXML記述の中に以下のテキストを追加することで問題を解決することができます。
- 追加する記述
- <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
以下はサンプルコードです。
<PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{9C51BEE6-800A-42B0-B0E1-AA7AB0ABDE4C}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>…</RootNamespace> <AssemblyName>…</AssemblyName> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <!--▼Add Here --> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <!--▲Add Here --> </PropertyGroup>