web-dev-qa-db-ja.com

Visual Studioプロジェクトプロパティのさまざまな "ビルドアクション"設定とは何ですか。

ほとんどの場合、あなたはVisual Studioがそれをデフォルトとして設定しているものだけを使用します...私はSolution Explorerで選択された各ファイルの BuildAction プロパティを参照しています。いくつかの選択肢があり、それらのそれぞれが何をするのかを知ることは困難です。

814
Gishu
  • なし :ファイルはプロジェクト出力グループに含まれず、ビルドプロセスではコンパイルされません。例としては、Readmeファイルなどのドキュメントを含むテキストファイルがあります。

  • コンパイル :ファイルはビルド出力にコンパイルされます。この設定はコードファイルに使用されます。

  • Content :Application.GetContentStream(URI)を介して(アセンブリと同じディレクトリにある)ファイルをストリームとして取得できます。このメソッドが機能するためには、ファイルを "Content"としてマークしたときにVisual Studioが追加するAssemblyAssociatedContentFileカスタム属性が必要です。

  • 埋め込みリソース :ファイルを専用のアセンブリマニフェストリソースに埋め込みます。

  • リソース (WPFのみ):AppName.g.resourcesという名前の(アセンブリ内のすべてのファイルによる)アセンブリマニフェストリソースにファイルを埋め込みます。

  • Page (WPFのみ)xamlファイルをbamlにコンパイルするために使用されます。その後、bamlResourceと同じ手法で埋め込まれます(すなわち、AppName.g.resourcesとして利用可能)。

  • ApplicationDefinition (WPFのみ):アプリケーションを定義するXAML /クラスファイルをマークし、x:Class = "Namespace.ClassName"で分離コードを指定し、起動フォームを/に設定します。 StartupUri = "Window1.xaml"のページ

  • SplashScreen (WPFのみ)SplashScreenとマークされた画像は、WPFアプリケーションがロードされた後に自動的に表示され、その後フェードします

  • DesignData :Visual Studioでサンプルデータを使用してユーザーコントロールをプレビューできるようにXAMLビューモデルをコンパイルします(モック型を使用します)。

  • DesignDataWithDesignTimeCreatableTypes :Visual StudioのサンプルデータでユーザーコントロールをプレビューできるようにXAMLビューモデルをコンパイルします (実際の型を使用します)

  • EntityDeploy (Entity Framework)Entity Frameworkアーティファクトのデプロイに使用される

  • CodeAnalysisDictionary スペル規則カスタムWord辞書 を含むXMLファイル

969
Gishu

ドキュメントから:

BuildActionプロパティは、ビルドの実行時にVisual Studioがファイルに対して実行する処理を示します。 BuildActionは、いくつかの値のうちの1つを持つことができます。

なし - ファイルはプロジェクト出力グループに含まれず、ビルドプロセスではコンパイルされません。例としては、Readmeファイルなどのドキュメントを含むテキストファイルがあります。

コンパイル - ファイルはビルド出力にコンパイルされます。この設定はコードファイルに使用されます。

コンテンツ - ファイルはコンパイルされていませんが、コンテンツ出力グループに含まれています。たとえば、この設定は.htmまたは他の種類のWebファイルの既定値です。

埋め込みリソース - このファイルは、メインプロジェクトビルドの出力にDLLまたは実行可能ファイルとして埋め込まれています。通常、リソースファイルに使用されます。

107
Paul Batum

Page - 指定されたXAMLファイルを取得してBAMLにコンパイルし、その出力をアセンブリの管理対象リソースストリーム(具体的にはAssemblyName.g.resources)に埋め込みます。 file、blah.g.csファイルが作成されます。このファイルには、そのページの「分離コード」の部分クラスが含まれます。これは基本的にBAML goopを呼び出してファイルをメモリに再ハイドレートし、あなたのクラスのメンバー変数のどれかを今作成したアイテムに設定することを含みます(例えばx:Name = "foo"をアイテムに設定した場合)。あなたはthis.foo.Background = Purple;またはそれに類似したことができるでしょう。

ApplicationDefinition - さらに1ステップ進むこと以外はPageと似ていますが、アプリケーションオブジェクトをインスタンス化し、その上でrunを呼び出すと、StartupUriプロパティで設定された型がインスタンス化され、メインウィンドウが表示されます。 。

また、明確にするために、この質問は全体としてその結果セットで無限です。 MSBuildタスクをビルドするだけで、誰でも追加のBuildActionsを定義できます。 %systemroot%\ Microsoft.net\framework\v {version} \ディレクトリを調べて、Microsoft.Common.targetsファイルを見ると、さらに多くのことがわかります(たとえば、VS Pro以上では、プライベートクラスを単体テストするのに役立つプライベートアクセサを生成できるようにする「シャドウ」アクションがあります。

34
Dominic Hopton

VS2010は 'Build Action'と 'Copy to Output Directory'のプロパティを持っています。そのため、copyプロパティが 'Copy if newer'または 'Copy Always'に設定されている場合、 'None'のアクションでもビルドディレクトリにコピーされます。

そのため、「Application」のビルドアクションは、「Application.GetContentStream」を介してアクセスするコンテンツを示すために予約する必要があります。

私はいくつかの外部リンクされた.configインクルードのために 'Build Action'設定 'None'と 'Copy if New'の 'Copy to Output Direcotry'設定を使いました。

G.

28
Gerard ONeill

VS2008では、最も役に立つと思われるドキュメントエントリは次のとおりです。

Windows Presentation Foundation WPFアプリケーションの構築(WPF)

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

ApplicationDefinitionアプリケーション定義を含むXAMLマークアップファイル(ルート要素がApplicationであるXAMLマークアップファイル)を識別します。 InstallがtrueでOutputTypeがwinexeの場合、ApplicationDefinitionは必須です。 WPFアプリケーション、したがってMSBuildプロジェクトは、1つのApplicationDefinitionしか持つことができません。

Pageコンテンツがバイナリ形式に変換され、アセンブリにコンパイルされたXAMLマークアップファイルを識別します。ページ項目は通常、分離コードクラスと組み合わせて実装されます。

最も一般的なPageアイテムは、最上位要素が次のいずれかであるXAMLファイルです。

Window (System.Windows..::.Window).

Page (System.Windows.Controls..::.Page).

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).

ResourceDictionary (System.Windows..::.ResourceDictionary).

FlowDocument (System.Windows.Documents..::.FlowDocument).

UserControl (System.Windows.Controls..::.UserControl).

リソースアプリケーションアセンブリにコンパイルされるリソースファイルを識別します。前述のように、UICultureはリソースアイテムを処理します。

コンテンツアプリケーションとともに配布されるコンテンツファイルを識別します。コンテンツファイルを記述するメタデータは、(AssemblyAssociatedContentFileAttributeを使用して)アプリケーションにコンパイルされます。

5
James Moore

どうやって このページ Microsoft Connectから(DesignDataとDesignDataWithDesignTimeCreatableTypesを説明する)タイプ。引用:

以下では、サンプルデータファイルの2つのビルドアクションについて説明します。

サンプルデータの.xamlファイルには、以下のいずれかのビルドアクションを割り当てる必要があります。

DesignData サンプルデータ型は偽の型として作成されます。サンプルデータ型が作成不可能な場合、または定義する読み取り専用プロパティがある場合は、このビルドアクションを使用します。 。のサンプルデータ値

DesignDataWithDesignTimeCreatableTypes サンプルデータ型は、サンプルデータファイルで定義された型を使用して作成されます。サンプルデータ型がデフォルトの空のコンストラクタを使用して作成可能な場合

信じられないほど徹底的なsoではありませんが、それは少なくともヒントを与えます。 このMSDNのチュートリアル にもいくつかのアイデアがあります。これらのビルドアクションがSilverlight以外のプロジェクトにも適用可能かどうかわかりません。

4
Per Lundberg
  • Fakes: Microsoft Fakes(単体テスト分離)フレームワークの一部。すべてのVisual Studioバージョンで利用できるわけではありません。偽物はプロジェクト内の単体テストをサポートするために使用され、アプリケーションの他の部分をスタブまたはシムに置き換えることによって、テストするコードを分離するのに役立ちます。もっとここに: https://msdn.Microsoft.com/ja-jp/library/hh549175.aspx
4
Jorge Garcia