DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DebugとReleaseの違い

環境/言語:[Windows2000 VB.NET Framework 1.1]
分類:[.NET]

お世話になります。

ボタンをクリックすると、SQLのテーブルの内容を、エクセルの帳票に印字するシステムです。ここで、Debugでリビルドする場合は問題ないのですが、Releaseでリビルドすると、「ファイルまたはアセンブリ名 Interop.Excel、またはその依存関係の1つが見つかりませんでした。」となってしまいます。

Debugの時は、Binフォルダに出来ていたexeから起動していました。
Releseの時は、Releseフォルダに出来たexeから起動しています。

エクセルは、プロジェクト→参照の追加でMicrosoft Excel 10.0 Object Libraly 1.4 で追加しています。

Releaseの時に、Interop.Excel.dllをうまく参照していない、という意味かな?と思うのですが、特に指定するようなメニューが見つからないし・・・。

Releaseだと、exeの容量が少し減って、若干アプリの速度が速くなった気がします。気のせいでしょうか?

対処方法をお願い致します。
Shinoさん こんにちは。
> ボタンをクリックすると、SQLのテーブルの内容を、エクセルの帳票に印字するシステムです。ここで、Debugでリビルドする場合は問題ないのですが、Releaseでリビルドすると、「ファイルまたはアセンブリ名 Interop.Excel、またはその依存関係の1つが見つかりませんでした。」となってしまいます。
>
> Debugの時は、Binフォルダに出来ていたexeから起動していました。
> Releseの時は、Releseフォルダに出来たexeから起動しています。

どっちでビルドしても、binにexeができると思います^^;

> エクセルは、プロジェクト→参照の追加でMicrosoft Excel 10.0 Object Libraly 1.4 で追加しています。
>
> Releaseの時に、Interop.Excel.dllをうまく参照していない、という意味かな?と思うのですが、特に指定するようなメニューが見つからないし・・・。

dubug,releaseの下に、構成マネージャってのがあると思いますが、
ここでも違いがありませんか??

> Releaseだと、exeの容量が少し減って、若干アプリの速度が速くなった気がします。気のせいでしょうか?

Releaseだと、余計なdebug文とかを削除してくれるので、
容量も小さくなるし、その分若干速度が速くなります。
■No7310に返信(Shinoさんの記事)
> Debugの時は、Binフォルダに出来ていたexeから起動していました。
> Releseの時は、Releseフォルダに出来たexeから起動しています。

BinフォルダとExcelのDLLは存在しますか?
ReleseビルドしてReleseフォルダに出来たEXEをBinフォルダにコピーして
実行してみてください。
それで動くのなら、実行するのに何か足りていないと思われます。
(ExcellのDLLあたりが怪しいかな)


> Releaseだと、exeの容量が少し減って、若干アプリの速度が速くなった気がします。気のせいでしょうか?

気のせいではないです。
そのようにビルドされます。
たまにDebugビルドのほうが容量が少なかったりもしますが。
■No7318に返信(SHさんの記事)

SHさん、レスありがとうございます。

> どっちでビルドしても、binにexeができると思います^^;
Releaseでビルドしたから、Releaseフォルダのexeを使わないといけない、と思ったのですが・・・。

> dubug,releaseの下に、構成マネージャってのがあると思いますが、
はい、投稿前にも構成マネージャのところいじってビルドしてみたのですが、何がかわったのかさっぱり分かりませんでした・・・。

もう少し調べてみます。
また、何か分かったらお願い致します。
rakiさん、レスありがとうございます。

> ReleseビルドしてReleseフォルダに出来たEXEをBinフォルダにコピーして
> 実行してみてください。
動きました!dllとexeは同じところへ置かないとだめなんですね。

で、いろいろ試しているうちに、Releaseでリビルドすると、Binフォルダのexeも
Releaseに出来るサイズと同じサイズのexeが出来るようになりました。
・・・というか、最初からこうだったでしょうか?私の記憶違い?
結局、Debug、Release問わず、Binに出来たexeを使えばいい?ということでよろしいでしょうか?
■No7324に返信(Shinoさんの記事)
> 動きました!dllとexeは同じところへ置かないとだめなんですね。

ものによりますけどね。
最近のはSide-by-Side配置といってレジストリ登録したり、
System32フォルダなどパスの通ったフォルダにDLLを置くのではなく、
EXEと同じところへ置く方式が取られていますから。
.NET Frameworkで作成されたDLLもこれに当てはまります。


> で、いろいろ試しているうちに、Releaseでリビルドすると、Binフォルダのexeも
> Releaseに出来るサイズと同じサイズのexeが出来るようになりました。
> ・・・というか、最初からこうだったでしょうか?私の記憶違い?
> 結局、Debug、Release問わず、Binに出来たexeを使えばいい?ということでよろしいでしょうか?

初期設定のままでしたら、Binフォルダには最後にビルドしたDLLが
配置されているはずです。
DebugでビルドしたならDebug版が、ReleaseでビルドしたならRelease版が。
なので、基本的にはBinフォルダにあるEXEを使えばOKです。
rakiさん、とても早いレスありがとうございます。

2000、XPともOKでした。
たいへん助かりました。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板