web-dev-qa-db-ja.com

Visual Studioのコンテンツビルドアクションとは何ですか?

Visual StudioのContentBuild Actionは何をしますか?何もしているようには見えません。

MSDNのファイルプロパティの記事(もう存在しません)は次のように述べています:

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

しかし、「コンテンツ出力グループ」の意味がわかりません。

これは展開に関するものですか?意味、アクションはビルド時に実際の効果はありませんが、展開時にのみですか?

41
Martin Prikryl

更新されたVisual Studioドキュメント には、より意味のある説明があります。

Content-Contentとマークされたファイルは、ストリームとして取得できます。呼び出し Application.GetContentStream 。 ASP.NETプロジェクトの場合、これらのファイルはサイトが展開されるときにサイトの一部として含まれます。


また、いくつかのテストの後、 Visual Studioプロジェクトプロパティのさまざまな「ビルドアクション」設定とは何ですか? からのヒントを使用して、=-、[Content =ビルドアクションは、WPFプロジェクトでこの効果があります(おそらくASPも)。

追加する

[Assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("filename")]

WpfApplication1_Content.g.csAssemblyAssociatedContentFileAttribute について読んでください。

コンソールまたはWinFormsアプリケーションでは、何も行いません(ソースコードでも出力バイナリでもありません)。

コメント で、前述の質問に、展開への影響についての注意があります:

ワンクリックデプロイを使用するとコンテンツが含まれますですが、[新しい場合にコピー]が選択されていても[なし]は含まれません。

おそらく、これはコンソールおよびWinFormsアプリケーションでも動作します(私は試していません)。

7
Martin Prikryl

「コンテンツ」とは、展開可能なプロジェクトアイテムであることを意味し、ファイルをターゲットマシンにコピーする必要があることを示します。

シンプルなコンソールモードプロジェクトで見ることができるもの。プロジェクト+新しいアイテムの追加、ビットマップファイルアイテムテンプレートを選択します。そのビルドアクションは自動的に「コンテンツ」に設定されます。 [プロジェクト+プロパティ]、[公開]タブを使用して、[アプリケーションファイル]ボタンをクリックします。展開されたファイルのリストにビットマップが自動的に追加された方法に注意してください。

enter image description here

[プロパティ]ウィンドウに戻り、ビルドアクションを[なし]に変更します。もう一度ボタンをクリックして、ファイルが現在含まれていないことを確認します。

VSとまったく同じ理由で統合するインストーラーユーティリティでも使用されます。また、Webアプリケーションには大きな問題があり、通常、Webサーバーにデプロイする必要があるlotのファイルがあります。

29
Hans Passant

これはC#プロジェクトにのみ関係があると思います。画像をご覧ください:

Content

'Copy Output Directory''Copy always'または'Copy if newer'に設定すると、そのファイルが出力フォルダーにコピーされますビルドするとき。 'Build(solution)'を押したときに実行されるアクションは、'Build action'プロパティに依存します。私がMicrosoftのウェブサイトについて理解していることから、それがテキスト、htmlまたは他の通常のファイルのようなcontentファイルである場合、ファイルをコピーするだけです。

他にビルドアクションが行うことは私にはわかりませんが、高度なオプションのようです。

肝心な点:フォルダー構造とファイルを各ビルドで整理するのに役立つ機能のようです。したがって、いつでも展開の準備ができています。これで機能のアイデアが得られることを願っています。

4
RB-Develop