web-dev-qa-db-ja.com

.csprojファイルでは、<None Include = "...">の目的は何ですか?

お元気ですか

<None Include="C:\foo.bar" />

と違う

<Content Include="C:\foo.bar" />

121
Emmett

ビルドアクション プロパティに関するMSDNの記事では、違いについて説明しています。

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

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

126
adrianbanks

1つの違いは、公開方法です。 「なし」アイテムは公開に含まれませんが、「コンテンツ」アイテムは含まれます。たとえば、[公開]タブの[アプリケーションファイル]ダイアログで。

30
Marc Gravell

私は100%確信していません(MSDNの説明ビルドアクションプロパティを読んでいます)が、MSDNからStackOverflowにその答えをコピーするだけでは質問に答えません完全に私のために。

NoneContentの違いは、Webプロジェクトにのみ影響します。コマンドラインプロジェクトの場合、WinFormプロジェクトまたはUnitTestプロジェクト(私の場合)など。NoneContentには異なる動作はありません。

MSDN:Webプロジェクトで使用される用語のみ「プロジェクト出力グループ」または「コンテンツ出力グループ」ですよね?

12
hfrmobile

私の状況では、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>

私のプロジェクトが順調に構築されている間、ContentNoneのアイテムタイプ要素がItemGroupに混在しているのはなぜだろうと思いました。この MSDN記事 (Visual Studio 2010の場合)は、私が探していたガイダンスを提供してくれました。

.resxファイルは画像ファイルを参照するため、リソースエディタが画像を追加するとき、Build ActionNoneに設定することに注意してください。 。ビルド時に、イメージは.resxファイルから作成された.resourcesファイルに取り込まれます。その後、.resxファイル用に自動生成された厳密に型指定されたクラスを使用して、イメージに簡単にアクセスできます。したがって、この設定をEmbedded Resourceに変更しないでください。これを行うと、アセンブリにイメージが2回含まれます。

解決策:このガイダンスでは、テキストエディターを使用して、Contentアイテムタイプ要素をNoneに変更しました。

また、MSBuildアイテムの概要については、これを参照してください MSDN記事

7
DavidRR

コンパイル可能なアイテムを含まないプロジェクトがあります(ジャスミンユニットテスト用のhtmlおよびjavascriptが格納されています)。

ある日(プロジェクトを含む)私のソリューションは、「ターゲット「ビルド」がプロジェクトに存在しません」と言ってコンパイルを停止しました。

コンパイラを取り込むためのインポートを追加しました。これは私のマシンでは正常に機能しましたが、ビルドサーバーでmsbuildを使用すると失敗しました。

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

その後、次の行を変更しました

<None Include="SpecRunner.html" />

<Content Include="SpecRunner.html" />

ビルドサーバーでも機能しました。

3
cedd

.vstemplateで定義したファイルを含めるには、テンプレートプロジェクトファイルにNoneが必要です。そうしないと、作成および変換プロセスで失われます。それらはすべてを構築するために使用する一時フォルダーに残され、その後すぐに削除されます。

2
CAD bloke

私の場合、。PubxmlNoneリストの中のファイルの1つです。ソリューションの構築やWebプロジェクトの静的ファイルとしての使用は意図されていません。しかし、サイトをAzureに発行するために、構成はこれにあります。

Microsoftの記事によると、これらは。csprojファイルタグに見られる主なタイプです。

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

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

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

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

0
krishna kanth