アプリケーション全体に必要なすべての埋め込みアイコンを含むリソースプロジェクトを作成したいと思います。デザイナーでフォームのBackgroundImageプロパティをクリックするときに、リソースを選択したいと思います。
別のアセンブリのリソースを使用することはできますが、残念ながら、以下で説明する理由により、デザイナーを介して使用することはできません。
リソースプロジェクトで、画像ボックス付きのフォームを追加し、BackgroudImageを設定します。これは、プロジェクトResouces.resxおよびResouces.Designer.csに画像を追加するためだけのものです。画像がリソースとして追加された後、画像ボックス付きのフォームを削除できます。
リソースプロジェクトで、Resouces.Designer.csに移動し、クラススコープをパブリックに変更し、イメージメソッドスコープを内部からパブリックに変更します。
public static System.Drawing.Bitmap SO_down {
get {
object obj = ResourceManager.GetObject("SO down", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
リソースDLLを使用するプロジェクトでは、独自のリソースを使用しないようにBackGroundImagesを設定する必要があります。
前:
this.pictureBox1.BackgroundImage = global::WinFormWithSatelliteResources.Properties.Resources.SO_down;
後:
this.pictureBox1.BackgroundImage = global::SatResources.Properties.Resources.SO_down;
リソースをメインプロジェクトから切り離そうとする場合、どのようなアーキテクチャを検討する必要がありますか?1行か2行のコードを変更するたびに、100MBの実行可能ファイルをリリースするのは賢明な考えではありません。
最近では、ほとんどの企業がインターネットに頼ることを喜んでいます。MyStyle22022013.CSSやwebbrowsersのようなリソースをバージョン管理する方法を知っていると、それらがすでに最新のコピーを持っている場合、リソースをフェッチしません。同様の戦略を提案します。これらのイメージリソースをすべてオンラインにして、パッケージ化して展開しなくてもリソースを更新できるようにします。
このように考えると、なぜリソースだらけのアセンブリでさえ悩むのでしょうか。Mazeは、インターネットからリソースを取得し、ファイルシステムからそれらを使用するだけです。
(リソースをダウンロードするための)最初のインターネットアクセスがオプションでない場合、@jrossの回答は完全に実行可能であるように思われます。最近はCDでリリースする予定はないと思いますが。