ほとんどの場合、Visual Studio がデフォルトとして設定するものをそのまま使用します。ここでは、ソリューション エクスプローラーで選択された各ファイルのBuildActionプロパティを参照しています。いくつかのオプションがあり、それぞれが何をするかを知るのは困難です。
8 に答える
None : ファイルはプロジェクト出力グループに含まれず、ビルド プロセスでコンパイルされません。例として、Readme ファイルなどのドキュメントを含むテキスト ファイルがあります。
Compile : ファイルはビルド出力にコンパイルされます。この設定は、コード ファイルに使用されます。
Content : Application.GetContentStream(URI) を使用して、(アセンブリと同じディレクトリにある) ファイルをストリームとして取得できます。このメソッドが機能するには、AssemblyAssociatedContentFile カスタム属性が必要です。この属性は、ファイルを "コンテンツ" としてマークしたときに Visual Studio によって適切に追加されます。
埋め込みリソース: ファイルを専用のアセンブリ マニフェスト リソースに埋め込みます。
リソース (WPF のみ) : AppName.g.resources という名前の共有 (同様の設定を持つアセンブリ内のすべてのファイルによる) アセンブリ マニフェスト リソースにファイルを埋め込みます。
ページ (WPF のみ)
xaml
:ファイルをにコンパイルするために使用されbaml
ます。その後baml
、同じ手法で埋め込まれResource
ます (つまり、`AppName.g.resources として利用可能)。ApplicationDefinition (WPF のみ) : アプリケーションを定義する XAML/クラス ファイルをマークします。x:Class="Namespace.ClassName" でコード ビハインドを指定し、StartupUri="Window1.xaml" でスタートアップ フォーム/ページを設定します。
SplashScreen (WPF のみ) : WPF アプリケーションの読み込み時に自動的に表示され、フェードするようにマークされた画像
SplashScreen
DesignData : Visual Studio でサンプル データを使用してユーザー コントロールをプレビューできるように、XAML ビューモデルをコンパイルします (モック型を使用)。
DesignDataWithDesignTimeCreatableTypes : Visual Studio でサンプル データを使用してユーザー コントロールをプレビューできるように、XAMLビューモデルをコンパイルします(実際の型を使用します) 。
EntityDeploy : (Entity Framework) : Entity Framework アーティファクトのデプロイに使用
ドキュメントから:
BuildAction プロパティは、ビルドの実行時に Visual Studio がファイルに対して行う処理を示します。BuildAction には、次の値のいずれかを指定できます。
なし - ファイルはプロジェクト出力グループに含まれず、ビルド プロセスでコンパイルされません。例として、Readme ファイルなどのドキュメントを含むテキスト ファイルがあります。
コンパイル - ファイルはビルド出力にコンパイルされます。この設定は、コード ファイルに使用されます。
コンテンツ - ファイルはコンパイルされませんが、コンテンツ出力グループに含まれます。たとえば、この設定は、.htm またはその他の種類の Web ファイルの既定値です。
埋め込みリソース - このファイルは、メイン プロジェクトのビルド出力に DLL または実行可能ファイルとして埋め込まれます。通常、リソース ファイルに使用されます。
ページ -- 指定された XAML ファイルを受け取り、BAML にコンパイルし、その出力をアセンブリのマネージド リソース ストリーム (具体的には AssemblyName.g.resources) に埋め込みます。さらに、ルート XAML 要素に適切な属性がある場合は、このファイルには、そのページの「コードビハインド」の部分クラスが含まれます。これには基本的に、ファイルをメモリに再水和し、クラスのメンバー変数のいずれかを現在作成されているアイテムに設定するための BAML goop への呼び出しが含まれます (たとえば、アイテムに x:Name="foo" を配置した場合) 、 this.foo.Background = Purple; などを実行できます。
ApplicationDefinition -- Page と似ていますが、一歩先に進み、アプリ オブジェクトをインスタンス化するアプリケーションのエントリ ポイントを定義し、その上で run を呼び出します。これにより、StartupUri プロパティによって設定された型がインスタンス化され、mainwindow .
また、明確にするために、この質問全体は結果セットに無限にあります。MSBuild タスクをビルドするだけで、誰でも追加の BuildAction を定義できます。%systemroot%\Microsoft.net\framework\v{version}\ ディレクトリを見て、Microsoft.Common.targets ファイルを見ると、さらに多くのことを解読できるはずです (たとえば、VS Pro 以降では、プライベート クラスの単体テストに役立つプライベート アクセサーを生成できる「シャドウ」アクションがあります。
VS2010 には、「ビルド アクション」のプロパティと、「出力ディレクトリにコピー」のプロパティがあります。そのため、コピー プロパティが [新しい場合はコピー] または [常にコピー] に設定されている場合、[なし] のアクションは引き続きビルド ディレクトリにコピーされます。
そのため、'Application.GetContentStream' を介してアクセスするコンテンツを示すために、'Content' のビルド アクションを予約する必要があります。
外部にリンクされた .config インクルードには、「なし」の「ビルド アクション」設定と「新しい場合はコピー」の「出力ディレクトリにコピー」設定を使用しました。
G.
Microsoft Connect のこのページ(DesignData および DesignDataWithDesignTimeCreatableTypes の説明) についてはどうですか。引用:
次に、サンプル データ ファイルの 2 つのビルド アクションについて説明します。
サンプル データの .xaml ファイルには、次のビルド アクションのいずれかを割り当てる必要があります。
DesignData :サンプル データ型は偽の型として作成されます。サンプル データ型を作成できない場合、またはサンプル データ値を定義する読み取り専用プロパティがある場合は、このビルド アクションを使用します。
DesignDataWithDesignTimeCreatableTypes :サンプル データ タイプは、サンプル データ ファイルで定義されたタイプを使用して作成されます。デフォルトの空のコンストラクターを使用してサンプル データ型を作成できる場合は、このビルド アクションを使用します。
それほど網羅的ではありませんが、少なくともヒントは得られます。この MSDN ウォークスルーでもいくつかのアイデアが得られます。これらのビルド アクションが Silverlight 以外のプロジェクトにも適用できるかどうかはわかりません。
- Fakes: Microsoft Fakes (単体テスト分離) フレームワークの一部。すべての Visual Studio バージョンで使用できるわけではありません。フェイクは、プロジェクトの単体テストをサポートするために使用され、アプリケーションの他の部分をスタブまたはシムに置き換えることで、テストしているコードを分離するのに役立ちます。詳細はこちら: https://msdn.microsoft.com/en-us/library/hh549175.aspx