web-dev-qa-db-ja.com

Visual Studioのビルドアクションコンテンツと「出力ディレクトリにコピー」の違い

Visual Studioのプロジェクトには、出力に含めたいが、コンパイルも埋め込みもしないファイルがあります。

私はこれを達成する2つの方法があることを知っています。

  1. ファイルのビルドアクションを「コンテンツ」に設定する
  2. 「出力ディレクトリにコピー」を「常にコピー」または「新しい場合にコピー」に設定

誰かが違いが何であり、どのシナリオが適切なオプションであるかを教えてもらえますか?

42
ilias

Build ActionからContentまで、ファイルはコンパイルされず、コンテンツ出力グループに配置されます。

ファイルがコピーを取得するかどうかは、Copy to Output Directoryその時点での設定。

もちろん、Copy Alwaysファイルでは、mayコンパイルされ、thenコピーされます。

MSDNの File Properties を参照してください。

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

26
Oded

Contentビルドアクションは、WPFプロジェクトで目に見える効果があります(おそらくASPも)。

追加します

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

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

WinFormsおよびコンソールアプリケーション(OPが使用しているもの)ではこれを行いません。そのため、ビルド時のNoneアクションに違いはありません。

このコメント には、展開への影響に関するメモも見つかりました。

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

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

9
Martin Prikryl

また、常にコピーは、コードが変更されていない場合でも、ソリューション内のそのプロジェクトの再構築をトリガーします。

7
MattC