たくさんの画像、Milkモデル、openGLを使用するプロジェクトをC#で作成しました。すべてを1つのexeにまとめて、自分のサイトにアップロードできるようにします。今、私はjpgなどの他のファイルに依存しているexeを取得しました。ILMergeを使用してみましたが、機能しませんでした。より簡単な解決策はありますか?ありがとう。
5 に答える
すべてのファイル/画像を埋め込みリソースとしてexeに入れることができます。
Visual C#を使用してリソースを埋め込んでアクセスする方法を参照してください(このリンクは現在404です)
それを埋め込みリソースとして追加します。
Visual Studio 内:
- ソリューション エクスプローラーに移動します。
- 画像を右クリックし、
- Build Actions に移動: [Embedded Resource] を選択します。
exe内にそのイメージがあります。後で Reflection を使用して、アプリケーションを実行するときにイメージを取得できます。
========= アプリケーションからの埋め込み画像の取得 =========
まず、最初の問題を解決します。画像を埋め込みリソースとして配置します。
2 番目の問題: Reflection を使用して画像にアクセスします。
private void Form1_Load(System.Object sender, System.EventArgs e)
{
System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
Stream myStream = myAssembly.GetManifestResourceStream("EmbeddingExample.image1.bmp");
Bitmap image = new Bitmap(myStream);
this.ClientSize = new Size(image.Width, image.Height);
PictureBox pb = new PictureBox();
pb.Image = image;
pb.Dock = DockStyle.Fill;
this.Controls.Add(pb);
}
ここから借りたソースコード:
ilmergeは、.net CLRバイナリをマージするためだけのものであり、通常はライブラリをメインの実行可能ファイルにバンドルするためのものです。
アートアセットのようなものについては、それらをリソースとしてアプリケーションに埋め込む必要があります。リソースから、ファイル内にあるかのようにデータを操作できるストリームを取得できます。
リソースの埋め込みについては、次のMSDNの記事を参照してください:http ://support.microsoft.com/kb/319292
プロパティでプロジェクトにイメージを追加すると、それを埋め込みリソースとして設定でき、バイナリ ファイル (dll または exe) に追加されます。
リソースファイル用のサテライトアセンブリを作成することをお勧めします。http://msdn.microsoft.com/en-us/library/21a15yht%28v=vs.71%29.aspx