Application_Start
ASP.NET Web フォーム アプリケーションのメソッドで、読み込まれたすべてのアセンブリ (およびそのバージョン番号) を log4net ログ ファイルに一覧表示する、すべての Web アプリケーションで使用するライブラリ モジュールがあります。
これは何年にもわたって問題なく機能してきました-今日まで、「アプリケーションのウォームアップ」メソッド( Scott Guthrie のブログ投稿で説明されているように、IIS への展開後(およびASP.NETが実行される前)に実行された後)の後に使用しようとしましたが、Application_Start
今では突然エラーが発生しました:
System.NotSupportedException: 呼び出されたメンバーは動的アセンブリでサポートされていません。
読み込まれたアセンブリを報告するコードは次のようになります。
public static void ReportLoadedAssemblies(this ILog log)
{
if (log.IsInfoEnabled)
{
log.Info("Loaded assemblies:");
IEnumerable<Assembly> appAssemblies = AppDomain.CurrentDomain.GetAssemblies().OrderBy(c => c.ManifestModule.Name);
foreach (Assembly asm in appAssemblies)
{
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
if (!fvi.CompanyName.Contains("Microsoft"))
{
log.Info(String.Format("{0, -45} : {1, -15} {2}", fvi.FileDescription, fvi.FileVersion, asm.Location));
}
}
}
}
どの行で正確にエラーがスローされるかは100%明確ではありません-これが次の行であると思われます:
IEnumerable<Assembly> appAssemblies = AppDomain.CurrentDomain.GetAssemblies().OrderBy(c => c.ManifestModule.Name);
では、このメッセージは正確には何を伝えているのでしょうか? また、この状況でロードされたアセンブリを取得するにはどうすればよいですか?