回答:
ビルドアクションプロパティに関するMSDNの記事で違いを説明しています。
なし -ファイルはプロジェクト出力グループに含まれず、ビルドプロセスでコンパイルされません。例は、Readmeファイルなどのドキュメントを含むテキストファイルです。
コンテンツ -ファイルはコンパイルされていませんが、コンテンツ出力グループに含まれています。たとえば、この設定は.htmまたはその他の種類のWebファイルのデフォルト値です。
100%確信はありません(ビルドアクションプロパティのMSDNの説明を読みます)が、その回答をMSDNからStackOverflowにコピーするだけでは、質問に対する完全な回答にはなりません。
NoneとContentの違いは、Webプロジェクトにのみ影響します。コマンドラインプロジェクト、WinFormプロジェクト、UnitTestプロジェクト(私の場合)など。なしとコンテンツに異なる動作はありません。
MSDN:「プロジェクト出力グループ」または「コンテンツ出力グループ」とは、Webプロジェクトで使用されている用語のみです。
None
vs は構築ステップではなく公開ステップにContent
のみ効果があるようです。ビルドステップのどちらかで設定できるようで、ファイルがビルドステップによってコピーされるかどうかを制御します。また、デフォルトではT4テンプレートがアイテムではなくアイテムとして追加されるのも奇妙に思われます。CopyToOutputDirectory
Content
None
私の状況では、MSBuildファイルには、ItemGroup
次のように表示されるイメージリソース用のがありました。
<ItemGroup>
<Content Include="Resources\image001.png" />
<Content Include="Resources\image002.png" />
<Content Include="Resources\image003.png" />
<Content Include="Resources\image004.png" />
<None Include="Resources\image005.png" />
<None Include="Resources\image006.png" />
<None Include="Resources\image007.png" />
</ItemGroup>
プロジェクトが正常に構築されていたので、にContent
とNone
アイテムタイプの要素が混在している理由を知りましたItemGroup
。このMSDNの記事(Visual Studio 2010用)は、私が探していたガイダンスを提供してくれました。
.resxファイルは画像ファイルを参照するため、リソースエディターが画像を追加すると、ビルドアクションはなしに設定されます。ビルド時に、イメージは.resxファイルから作成された.resourcesファイルに取り込まれます。次に、.resxファイル用に自動生成された厳密に型指定されたクラスを使用して、イメージに簡単にアクセスできます。したがって、これを行うと、アセンブリにイメージが2回含まれるため、この設定をEmbedded Resourceに変更しないでください。
解決策:このガイダンスに従って、テキストエディターを使用して、Content
アイテムタイプの要素をNone
。
コンパイル可能なアイテムを含まないプロジェクトがあります(jasmineユニットテスト用のhtmlとjavascriptが格納されています)。
ある日、私のソリューション(上記のプロジェクトを含む)が「ターゲット「ビルド」がプロジェクトに存在しない」と言ってコンパイルを停止しました。
コンパイラーを取り込むためのインポートを追加しましたが、私のマシンでは問題なく機能しましたが、ビルドサーバーでmsbuildを使用できませんでした。
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
次に、行を変更しました
<None Include="SpecRunner.html" />
に
<Content Include="SpecRunner.html" />
ビルドサーバーでも動作しました。
私の場合、.PubxmlはNoneの中でそれらのファイルの1つですリストにある。ソリューションの構築や、Webプロジェクトの静的ファイルとしては使用できません。しかし、サイトをAzureに公開するために、構成はこの中に存在します。
Microsoftの記事によると、これらは.csprojファイルタグの中で見られる主なタイプです。
なし-ファイルはプロジェクト出力グループに含まれず、ビルドプロセスでコンパイルされません。例は、Readmeファイルなどのドキュメントを含むテキストファイルです。
コンパイル-ファイルはビルド出力にコンパイルされます。この設定はコードファイルに使用されます。
コンテンツ-ファイルはコンパイルされていませんが、コンテンツ出力グループに含まれています。たとえば、この設定は.htmまたはその他の種類のWebファイルのデフォルト値です。
埋め込みリソース-このファイルは、DLLまたは実行可能ファイルとしてメインプロジェクトのビルド出力に埋め込まれます。通常、リソースファイルに使用されます。
コンテンツファイルはビルドには含まれていませんが、パブリッシュには含まれています。
なしファイルは、ビルドに含またり、彼らはあなたによって、そのように設定されている場合を除き、公開されていません。たとえば、[常に出力]または[新しい]の[出力ディレクトリにコピー]設定では、ビルドとパブリッシュの両方に含まれます。
Content
のsがsに変更されましたNone
。Razorに変換するときに、ファイルの名前を.ascxから.cshtmlに変更したときに発生したと思います。それらを手動で元に戻すと、いくつかの展開の問題が修正されました。嬉しいです。