Autofac を使用している Windows サービスがあります。参照されているアセンブリを読み込もうとすると、アプリケーションのどこにも使用していないオブジェクトが含まれているため、すべてがリストされるわけではありませんが、インターフェイスの実装がそこにあり、含める必要があります。次のメソッドは、アセンブリを読み込みます。
private IEnumerable<Assembly> GetReferencedAssemblies(Assembly assembly)
{
var assemblyNames = assembly.GetReferencedAssemblies();
List<Assembly> assemblies = new List<Assembly>();
assemblies.Add(assembly);
foreach (var item in assemblyNames)
{
var loadedAssembly = System.Reflection.Assembly.Load(item.FullName);
assemblies.Add(loadedAssembly);
}
return assemblies;
}
アセンブリに含まれるオブジェクトへのダミー参照を作成すると、アセンブリが読み込まれ、autofac によって型が構築されます。ダミー オブジェクトを削除すると、アセンブリは含まれなくなります。
そこにオブジェクトを直接使用しているかどうかに関係なく、参照されているすべてのアセンブリを含める方法はありますか (インターフェイスの実装がそこにあるため、まだ必要であることに注意してください)。
これは、ビン内のすべての DLL をロードするだけなので、ASP.NET では問題なく動作します。