ビルドアクション


Visual Studio 2010にWindows Phone 7 SDKをインストール使っていると「ファイル」の「プロパティシート」に知らない項目が増えていることが気がつく。

従来からあったコンパイル、コンテンツ、埋め込まれたリソースは良いが、その後の

    • Resource
    • CodeAnalysisDictionary
    • ApplicationDefinition
    • Page
    • SplashScreen
    • DesignData
    • DesginDataWithDesignTimeCreatableTypes
    • EntityDeploy

これらはどれも全く知らない。

少し調べてみたがCodeAnalysisDictionaryはコード解析辞書、ApplicationDefinitionとPage、SplashSvreenはXAMLの用途の違い、DesignDataとDesginDataWithDesignTimeCreatableTypesはテスト用データ、EntityDeployはエンティティフレームワークの.edmx形式のものだということが解ったが、Resourceが今ひとつよく分らない。

この"Resource"に気がついたのは、外部XAMLのResourceDictionaryを参照する場合に例えばApp.xamlには以下のように記述するが、

<Application 
    :
    <!--Application Resources (silverlightの場合、アセンブリ名;component/ディレクトリ/xamlとなるので注意) -->
    <Application.Resources>
        <ResourceDictionary Source="/Mandarine;component/Resources/CommonResourceDictionary.xaml" />
    </Application.Resources>
    :
</Application>

この場合、CommonResourceDictionary.xamlのファイルはMadarineという名前のアセンブリ内に存在しているが、ビルドアクションは"埋め込みリソース"では駄目で、"Resource"にしなくてはならないのである。

そもそも元々「埋め込みリソース」という分類があるのにResourceというのは何の目的に使うのだろう。