C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: リソースファイルの管理でファイルサイズは2倍?


(過去ログ 105 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■62480 / inTopicNo.1)  リソースファイルの管理でファイルサイズは2倍?
  
□投稿者/ ポコニャン! (2回)-(2011/10/13(Thu) 21:53:37)

分類:[.NET 全般] 

VisualStudio2005でアプリを作っています。
その中でリソースデザイナでファイルの管理をしているのですが、どうしてもビルドした後はファイルサイズが2倍になってしまうものでしょうか?
例えばですが、リソースファイルが、50MBあったとします。
そこでビルドをしてVS2005のbin下のReleaseフォルダには配布用のEXEが50MBのファイルを含んだ状態で作成されかつ、Resourcesフォルダには登録したリソースファイルがありますよね。
プログラムの中でリソースファイルの取り出しもしているのでEXEだけで動かすとエラーになります。
まぁフォルダごと配れば問題ないわけですが、でもサイズが2倍になるのは何とかできないかな。。。と思うのですがなぜEXEにリソースファイルが含まれているにもかかわらずEXEだけで動かせないのでしょうか?
引用返信 編集キー/
■62483 / inTopicNo.2)  Re[1]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ Azulean (857回)-(2011/10/13(Thu) 22:11:16)
よくわかりません。

exe にファイルを埋め込みたいのですか?
exe からフォルダーの下にあるファイルを参照する形にしたいのですか?

前者であれば、そもそも exe だけで実行するとエラーになるという設計・実装が間違っています。
リソースから取り出すようなコードを書いてください。(Resources.hogehoge みたいに)

後者であれば、リソースとしてプロジェクトに含めている&実行ファイルに含めるような設定にしていることが問題です。
プロジェクトから外す、あるいは実行ファイルに含めないように見直してください。
引用返信 編集キー/
■62484 / inTopicNo.3)  Re[2]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ ポコニャン! (3回)-(2011/10/13(Thu) 22:34:50)
Azulean 様 ありがとうございます。

> exe にファイルを埋め込みたいのですか?
こちらの仕様にしたいです。
EXEだけで余分なものはいらないということです。

一応書き方としては、下記のようなコードです。
Byte[] data = Properties.Resource.hoge;
using (System.IO.Stream st = System.IO.File.Open(@textBox.Text + "\\hoge.lzh", System.IO.FileMode.Create))
{
using System.IO.BinaryWriter bw = new System.IO.BinaryWriter(st))
{
bw.Write(data);
}

たぶんおっしゃっていただいていることと同じように書いているつもりではありましたが・・・
引用返信 編集キー/
■62487 / inTopicNo.4)  Re[1]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ Azulean (859回)-(2011/10/14(Fri) 00:48:56)
No62480 (ポコニャン! さん) に返信
> プログラムの中でリソースファイルの取り出しもしているのでEXEだけで動かすとエラーになります。

聞くのを忘れてました。
このエラーって何ですか。具体的にしてください。
引用返信 編集キー/
■62490 / inTopicNo.5)  Re[3]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ ゼロワン (10回)-(2011/10/14(Fri) 13:29:52)
2011/10/14(Fri) 13:49:10 編集(投稿者)

No62484 (ポコニャン! さん) に返信

> Byte[] data = Properties.Resource.hoge;

上記の行で例外が発生するのですか?

> bw.Write(data);

それとも、上記の行で例外が発生するのですか?

他の行のエラーだったら、リソースとは関係ないんじゃないですか?
(例えば出力するファイルのパスが無効、パスへのアクセス権限がない、等)

どんなエラーが出ているか分からなければ、このスレッドの閲覧者はアドバイスのしようがありません。
引用返信 編集キー/
■62493 / inTopicNo.6)  Re[1]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ shu (1041回)-(2011/10/14(Fri) 13:48:05)
No62480 (ポコニャン! さん) に返信

配布用のEXE単体を実行環境にコピーして動作するのを確認したときにエラーが出たということでしょうか?
それともVisualStudioから実行するのにResourcesフォルダに保存されたファイルを削除してVisualStudio上で
実行したときにエラーが発生したということでしょうか?後者の場合、Exeに埋め込むファイルがないのでビルド中に
エラーが発生します。


>プログラムの中でリソースファイルの取り出しもしているのでEXEだけで動かすとエラーになります。
外部リソースから読み込んでいるのならそうかもしれませんが埋め込みリソースから読み込んでいるのなら
外部ファイルは関係ないです。


引用返信 編集キー/
■62587 / inTopicNo.7)  Re[2]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ ポコニャン! (6回)-(2011/10/19(Wed) 22:39:26)
ご回答いただいた皆様返信が遅くなりすみません。

今実行環境に触れなくてエラーがうろ覚えで大変申し訳ありませんが・・・

例外が発生しました。
○○がハンドルできませんでした。

このようなメッセージだったと思います。

>配布用のEXE単体を実行環境にコピーして動作するのを確認したときにエラーが出たということでしょうか?
そういうことになります。

ちなみに参照設定で、「ionic.zip.dll」というのも使ってみていますが、こちらのDLLもビルドした際EXEに含まれないので
それごとないとエラーになってしまいます。

このへんは、どうしようもないものでしょうか?
引用返信 編集キー/
■62588 / inTopicNo.8)  Re[3]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ Azulean (863回)-(2011/10/20(Thu) 00:52:27)
No62587 (ポコニャン! さん) に返信
> 例外が発生しました。
> ○○がハンドルできませんでした。
>
> このようなメッセージだったと思います。

その○○の部分や、付随する補足メッセージが重要です。
それがなければ、厳しい言い方になりますが、意味がありません。

> ちなみに参照設定で、「ionic.zip.dll」というのも使ってみていますが、こちらのDLLもビルドした際EXEに含まれないので
> それごとないとエラーになってしまいます。

参照するということは、その DLL を使うと言うことです。
.NET Framework 標準であれば、.NET Framework をインストールするだけで済みますが、それ以外の DLL を参照したなら、それが必要となるのは必然です。

もし、EXE 単体配布にこだわっているのであれば、その考え方はもうやめた方がよいでしょう。
.NET Framework が必要な時点で、EXE 単体で動くともいえませんし。
引用返信 編集キー/
■62596 / inTopicNo.9)  Re[3]: リソースファイルの管理でファイルサイズは2倍?
□投稿者/ ゼロワン (13回)-(2011/10/20(Thu) 13:59:30)
No62587 (ポコニャン! さん) に返信

> ちなみに参照設定で、「ionic.zip.dll」というのも使ってみていますが、こちらのDLLもビルドした際EXEに含まれないので
> それごとないとエラーになってしまいます。

exeファイルのみ配布したいのだと思いますが、それはなぜでしょうか?
その理由が分かれば、代替策も出てくるのではないかと思います。

Azuleanさんも指摘のように、exeだけのアプリを作成したとしても、
適切な.NET Frameworkがインストールされていない環境では動作させることもできません。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -