7

一部のボタンに画像を使用していますが、これらの画像を出力に含めたくありません。

これらの画像はボタンのプロパティを通じて設定されるため、Resource.resx ファイルで定義されます。

Build Action を Embedded Resource に設定するように言われましたが、なぜこれが違いを生むのか興味があります。現在、ビルド アクションを「なし」に設定していますが、どのファイルもコピーするように設定されていません。ビルドしたアプリケーションをどこにでも移動して起動すると、すべての画像が問題なく表示されます。(明確にするために、画像は起動時にプログラムのディレクトリにないことは間違いありませんが、それでも問題なく表示されます)。

MSDN で調べたところ、次のようになりました。

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

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

しかし、これからは、それらをすべてNoneに設定しても機能しないように思えます(ただし、機能します)。

したがって、組み込みリソースに設定するとどのような利点が得られるのか興味があります。私はそれをテストしましたが、違いはありませんでした。誰かが何が起こっているのか説明できることを望んでいました。

私の唯一の仮定は、ボタンを使用して画像プロパティを設定し、エントリがリソース ファイルに追加された場合、プロジェクトに追加されたファイルに接続されていないということです (それらは同じですが)。したがって、画像プロパティをこのように設定している場合は、画像をプロジェクト (つまり、ソリューション エクスプローラー) に含める必要さえありません。

ありがとうございました!

4

1 に答える 1

10

画像を表示する 2 つの異なる方法につまずいたようです。

  1. リソース ファイルを使用する場合、リソース ファイル自体に画像が含まれ、そのファイルが出力ディレクトリにコピーされます。次に、このリソース ファイルから画像を参照すると、すべてがうまくいきます。none/embedded/content の実際の画像設定は重要ではありません。これにより、さまざまな言語と場所のリソース ファイルを作成し、アプリケーション カルチャに基づいて使用するイメージを変更できます。

  2. 画像を参照するもう 1 つの方法は、画像を埋め込むか、プロジェクトのコンテンツとして設定することです。コンテンツとして設定すると、出力ディレクトリにコピーされ、場所に基づいて物理的に参照できます。または、埋め込んだ場合、ファイルは作成された dll 内に配置され、次を使用してそのファイルを含むリソース ストリームをプルできます。組み込み関数。

方法#1を使用しているため、リソースファイルに配置したら、リソースファイルはすでにプロジェクトにあり、そこからファイルが取得されるため、プロジェクトに含める必要はありません。

于 2013-02-26T19:46:10.793 に答える