C# – 通过反射及其类型获取所有装配

C# – 通过反射及其类型获取所有装配,第1张

概述我想要实现的是从解决方案中获取所有程序集的反射,然后是它们的类型,因此我可以使用.NET Core 2.0将它们放在集合[]中. 我能用的是 > AppDomain.CurrentDomain.GetAssemblies(); – 问题是这将获得所有引用和使用的程序集.在我的情况下,我想获得所有引用的程序集,但不是必需的.所以问题是JIT编译正在删除未使用的项目的引用,因此在这种情况下这不起作用. 我想要实现的是从解决方案中获取所有程序集的反射,然后是它们的类型,因此我可以使用.NET Core 2.0将它们放在集合[]中.

我能用的是

> AppDomain.CurrentDomain.GetAssemblIEs(); – 问题是这将获得所有引用和使用的程序集.在我的情况下,我想获得所有引用的程序集,但不是必需的.所以问题是JIT编译正在删除未使用的项目的引用,因此在这种情况下这不起作用.
>其他选项是使用Assembly.GetExecutingAssembly().位置获取DLL的位置,然后加载所有程序集.这里的问题是,当后者我想使用.GetTypes()时,从类型System.Reflection.ReflectionTypeLoadException抛出异常然后加载器异常我有System.IO.fileNotFoundException:无法加载文件或程序集Microsoft.EntityFrameworkCore.问题是,它正在尝试使用无法找到的库,使用Assembly.LoadFrom(dll)显然加载DLL似乎也不会加载依赖项(库).

我发现的是BuildManager.GetReferencedAssemblies,从我到目前为止读到的,它说这可以工作并且它获得所有引用,即使它们没有被使用,所以我也在MsBuild库中找到它,但是不包含该方法,所以我可能会引用错误的包.

我愿意接受任何建议,如何从.NET Core 2.0项目加载所有解决方案程序集及其类型.

提前致谢!

解决方法 我有一个非常相似的问题.我不确定这是否适用于您的情况,但List< Assembly> usedAssemblIEs = Assembly.GetExecutingAssembly().GetReferencedAssemblIEs().选择((item)=> Assembly.Load(item)).ToList();可能是一个解决方案. 总结

以上是内存溢出为你收集整理的C# – 通过反射及其类型获取所有装配全部内容,希望文章能够帮你解决C# – 通过反射及其类型获取所有装配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1232973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存