172

どうですか

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

と違う

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

?

4

8 に答える 8

159

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

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

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

于 2009-06-29T22:26:00.980 に答える
31

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

于 2009-06-29T22:24:18.113 に答える
14

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

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

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

于 2011-09-17T20:26:23.333 に答える
9

私の状況では、MSBuild ファイルには、ItemGroup次のように表示される for image リソースがありました。

  <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 用) は、私が探していたガイダンスを提供してくれました。

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

解決策:このガイダンスに従って、テキスト エディターを使用して、Content項目の種類の要素をに変更しましたNone

また、MSBuild 項目の概要については、このMSDN 記事を参照してください。

于 2015-10-28T19:07:24.287 に答える
3

コンパイル可能なアイテムを含まないプロジェクトがあります (ジャスミン単体テスト用の html と javascript を格納します)。

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

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

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

次に、行を次のように変更しました

<None Include="SpecRunner.html" />

<Content Include="SpecRunner.html" />

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

于 2012-04-25T15:56:57.090 に答える
2

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

于 2013-02-17T02:16:47.477 に答える