如何在ASP.NET Core 1.0 RC2中加载程序集

将我的Web应用程序从ASP.NET Core RC1迁移到RC2.我正在尝试加载我引用的类库.

此代码段不再适用于RC2.

public class Startup
{  
    public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
    {
        // libraryManager is null .... 
        ILibraryManager libraryManager = app.GetService<ILibraryManager>();

        List<Assembly> result = new List<Assembly>();

        IEnumerable<Library> libraries = libraryManager.GetLibraries();

        IEnumerable<AssemblyName> assemblyNames = libraries.SelectMany(e => e.Assemblies).Distinct();
        assemblyNames = Enumerable.Where(assemblyNames,e => e.Name.StartsWith("projectNamespace"));

        foreach (AssemblyName assemblyName in assemblyNames)
        {
            Assembly assembly = Assembly.Load(assemblyName);
            .
            .
            .
        }
    }
}

非常感谢我们的帮助,谢谢Stefan

解决方法

我找到了解决方案.我现在使用DependencyContext而不是ILibraryManager

var loadableAssemblies = new List<Assembly>();

var deps = DependencyContext.Default;            
foreach (var compilationLibrary in deps.CompileLibraries)
{
    if (compilationLibrary.Name.Contains(projectNamespace))
    {
        var assembly = Assembly.Load(new AssemblyName(compilationLibrary.Name));
        loadableAssemblies.Add(assembly);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐