首页 新闻 搜索 专区 学院

.net core如何读取所有页面的程序集

0
悬赏园豆:10 [已解决问题] 解决于 2019-02-15 09:49

之前.net framwork用的是:
System.Web.Compilation.BuildManager.GetReferencedAssemblies();

在.net core上好像用不了。

请问,我想要获取所有页编译都必须引用的程序集,应该怎么实现,谢谢。

代码如下,欲实现AutoFac的注册:

/// <summary>
/// AutoFac注册
/// </summary>
public class DefaultModuleRegister : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        var assemblys = System.Web.Compilation.BuildManager.GetReferencedAssemblies()
            .Where(m =>
                m.FullName.Contains(".ApplicationService") ||
                m.FullName.Contains(".Infrastructure.Repository"))
            .ToArray();
        builder.RegisterAssemblyTypes(assemblys)
            .Where(t => t.Name.EndsWith("Service"))
            .AsImplementedInterfaces().InstancePerLifetimeScope();
        builder.RegisterAssemblyTypes(assemblys)
            .Where(t => t.Name.EndsWith("Repos"))
            .AsImplementedInterfaces().InstancePerLifetimeScope();
    }
}
在7楼的主页 在7楼 | 初学一级 | 园豆:190
提问于:2019-02-12 16:49
< >
分享
最佳答案
0

已解决:

        IEnumerable<Assembly> allAssemblies = Assembly.GetEntryAssembly().GetReferencedAssemblies().Select(Assembly.Load);

        Assembly[] assemblies = allAssemblies.Where(m =>
                  m.FullName.Contains(".ApplicationService") ||
                  m.FullName.Contains(".Infrastructure.Repository"))
            .ToArray();
在7楼 | 初学一级 |园豆:190 | 2019-02-15 09:48
其他回答(2)
0

试试 Assembly.GetEntryAssembly().GetReferencedAssemblies()

收获园豆:8
dudu | 园豆:39028 (高人七级) | 2019-02-12 18:32

试了,返回的是AssemblyName的数组,RegisterAssemblyTypes方法需要Assembly数组,是还需要转换下吗?

支持(0) 反对(0) 在7楼 | 园豆:190 (初学一级) | 2019-02-13 14:21
0

https://github.com/hstarorg/Lara/blob/master/src/Lara.DI/Helpers/AutofacHelper.cs 也可以参考下。

收获园豆:2
幻天芒 | 园豆:36594 (高人七级) | 2019-02-12 21:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册