Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

背景

システムの運用中に、誤ってASP.NETのbinフォルダにDLLファイルをコピーしてしまうなどの問題でシステム障害を発生させてしまうという可能性があるようです。
このため、ココでは、ASP.NETでのbinファイルからのアセンブリ(DLLファイル)読み取りについての仕組みを説明します。

1. はじめに

2. ASP.NET 実行開始時点でアセンブリ DLL を読み込むことにより生じうる弊害

2.1 既定の場合

2.2 読み込み設定を指定し直した場合

3. ASP.NET 実行開始時点で読み込む対象のアセンブリ DLL

3.1 既定の場合

3.2 読み込み設定を指定し直した場合

4. ASP.NET 実行開始時点の読み込みを終えた後の、アセンブリ DLL 逐次読み込み

5. ASP.NET 実行開始時点で読み込むアセンブリ DLL の定義

5.1 定義場所

5.2 読み込み設定の既定値

5.3 読み込むアセンブリ DLL を指定する

5.4 読み込み設定の既定値をすべて削除する方法

5.5 読み込み設定の既定値を個別に削除する方法

5.6 ASP.NET のローカル bin フォルダにあるアセンブリ DLL の全読込設定

6. ASP.NET で読み込むアセンブリ DLL の定義と、ビルドの関係

6.1 ASP.NET Web アプリケーションの場合

6.2 ASP.NET Web サイトの場合

参考資料


Tags: :ASP.NET


*1 .NET Framework 環境で動作する、EXE・DLL の各実行ファイルをアセンブリと呼ぶ。
   ここではクラス ライブラリ等として使用する DLL ファイルが対象である (EXE ファイルは対象外である) ため、「アセンブリ DLL」と表記する。

*2 当該 Web アプリケーション自身または当該 Web サイト自身のアセンブリ DLL を指定しなかった場合は、ASP.NET コンテンツ (*.aspx 等) の閲覧時にパーサー エラーとなる。
    「パーサー エラー メッセージ: 型 '『名前空間の名称』.Global' を読み込めませんでした。」

*3 既定の定義である
      %SystemRoot%\Microsoft.NET\Framework\『バージョン番号』\Config\web.config
   の
      <system.web><pages><namespaces>《あらかじめインポートする名前空間の定義》</namespaces></pages></system.web>
   で指定されている名前空間によっては、それに対応するアセンブリ DLL を (5.3 により) 明示的に読み込まないと、ASP.NET コンテンツ (*.aspx 等) の閲覧時にコンパイル エラーとなる場合がある。
    「コンパイル エラー メッセージ: CS0234: 型または名前空間名 'yyyyy' は名前空間 'xxxxx' に存在しません。アセンブリ参照が不足しています。」

*4 たとえば既定で以下の名前空間が指定されている場合は、それに対応するアセンブリ DLL を明示的に読み込む指定をする必要がある。
   (使用しない名前空間の場合は、各 Web アプリケーション (または各 Web サイト) の web.config で、<remove namespace="『名前空間の名称』" /> にて指定を解除する方法もある)
      ・<add namespace="System.Linq" /> が指定されている → アセンブリ System.Core の読み込み設定が必要
      ・<add namespace="System.Web.DynamicData" /> が指定されている → アセンブリ System.Web.Extensions の読み込み設定が必要
      ・<add namespace="System.Xml.Linq" /> が指定されている → アセンブリ System.Xml.Linq の読み込み設定が必要

*5 MSDN ライブラリ「ASP.NET Web サイト内の共有コード フォルダ」
   https://msdn.microsoft.com/ja-jp/library/t990ks23(v=vs.100).aspx
     >Bin フォルダのアセンブリは登録する必要がありません。
     >Bin フォルダに .dll ファイルが存在するだけで、ASP.NET は認識できます。

*6 MSDN ライブラリ「compilation の assemblies 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/bfyb45k1.aspx

*7 MSDN ライブラリ「compilation 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/s10awwz0.aspx

*8 MSDN ライブラリ「compilation の assemblies 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/bfyb45k1.aspx
   の「次の既定の assemblies 要素は、ルートの Web.config ファイルで構成されます。」

*9 MSDN ライブラリ「compilation の assemblies の add 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/37e2zyhb.aspx

*10 指定するのはアセンブリ名であり、アセンブリ DLL ファイル名ではない。
*11 MSDN ライブラリ「compilation の assemblies の clear 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/ms164616.aspx

*12 MSDN ライブラリ「compilation の assemblies の remove 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/6st6fhzz.aspx

*13 MSDN ライブラリ「compilation の assemblies の add 要素 (ASP.NET 設定スキーマ)」
   https://msdn.microsoft.com/ja-jp/library/37e2zyhb.aspx
   の「解説」


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS