ASP.NET 2.0 の新機能 App_Code フォルダ

ASP.NET 1.1 では、アプリケーション直下に Bin という名前の特殊な意味をもつフォルダがあったが、ASP.NET 2.0 では動的コンパイルの対象が拡張され、App_Code というフォルダが追加されている。

Bin フォルダ

まずは、Bin フォルダについておさらいしておくと、ASP.NET では Web アプリケーションの直下にある Bin フォルダは、コンパイル時および実行時にアセンブリの検索パスとして利用されるようになっている。
ただし、ここは検索パスであって参照設定が自動的になされるわけではない。個別のページで参照設定を行うためには、@Assembly ディレクティブを使用し、複数のページに対してまとめて参照設定を行うには構成ファイルにおいてアセンブリを指定する必要がある。*1

App_Code フォルダ

Bin フォルダはコンパイル済みのアセンブリを配置するのに対して、ASP.NET 2.0 では動的コンパイルの対象として App_Code フォルダにソースコードを格納することができる。App_Code フォルダは1つのアセンブリとしてコンパイルされるため、BuildProvider の実装としてビルトインされている C# および VB では、これらのソースコードを混在して配置することができない。
App_Code フォルダにはサブディレクトリを作成することができ、これらを個別のアセンブリコンパイルすることができる。この設定は構成ファイルにて、

<compilation>
    <codeSubDirectories>
        <add directoryName="VB" />
        <add directoryName="CShap" />
    </codeSubDirectories>
</compilation>

のように行うことができる。この場合、App_Code/ と App_Code/VB/ と App_Code/CSharp/ に対応した3つのアセンブリが作成されることになる。この構成ファイルを設定においてApp_Code/Pascal/ というフォルダを作成した場合、それはより上位の App_Code/ に対応するアセンブリコンパイルされる。

*1:構成ファイルでアセンブリ名として * を指定すると、Bin フォルダに保存されているすべてのアセンブリを参照設定に追加することもできる