これはVer1.1でbinフォルダに入っているdllがどのようなものであったかがわかって、
Ver2.0での変更点がわかればなんとなく予想がつきます。
ただ、この点についての記述は見たことがないので、私の勝手な予想になりますが(w
で、Ver1.1のdllですけど、これはコードビハインドで作成されたコードファイル(.csや
.vbファイル)をコンパイルしたdllです。
Ver1.1ではaspxファイルはコードファイルに書かれたクラスを継承して利用してました。
ここで、コードファイルの部分はあらかじめコンパイルしておき、aspxファイルは
最初にアクセスされたときにこのあらかじめコンパイルされたdllを参照するように
なっていたのです。
ASP.NET自体はコードファイルを実行時にaspxファイルと一緒にコンパイルする
仕組みも持ってたんですが、VS.NETではあらかじめcsファイルをコンパイルする
方法をとっていた、ということになります。
これがVer2.0になってどう変わったか、というと、コードビハインドが継承ではなく、
partialクラスを利用することによって実現されるようになりました。
partialクラスというのは1つのクラスを複数のファイルに分割する仕組みです。
で、そのクラスをコンパイルする時には分割されたすべてのファイルが必要になります。
このため、aspxファイルとコードファイルは同時にコンパイルされることになりました。
具体的には、aspxファイルに最初にアクセスされたときにaspxファイルとコードファイルが
両方読み込まれてコンパイルされることになったのです。
こうなると、dllって必要ない、というよりもコードファイルがクラスの1部となっているので、
コードファイルからdllを作ること自体できなくなってます。
そんなわけでdllファイルが見た目なくなっているんだと思われます。
ちなみに、Ver2.0でできるようになったプリコンパイルを行うと、binフォルダができて
その中にdllが含まれます。
このdllはVer1.1までのようにコードファイルがコンパイルされたものではなく、
aspxファイルとコードファイルが一緒にコンパイルされたものになります。
もうひとつちなみに(w
上記の話はあくまで作成したアプリケーションのフォルダの中にdllファイルが
あるかないか、という観点でまとめています。
実際にASP.NETが実行される際は、aspxファイルが自動的にコードに変換されて
そのコードがコンパイルされて実行されてます。
ここでのコンパイルの結果作成されるdllはシャドーコピーという機能で特定の
フォルダに移され、そこからメモリにロードされて実行されることになります。
このシャドーコピーされたdllはVer1.1であれVer2.0であれ間違いなく存在します。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)