我想要做的是使用反射获取解决方案中的所有程序集,然后获取它们的类型,以便在.NET Core 2.0中将它们放入
我可以使用
另一个选择是使用
我找到的是 BuildManager.GetReferencedAssemblies,根据我目前的阅读,它表示这可能有用并且可以获取所有引用,即使它们没有被使用,因此我也在MsBuild库中找到了它,但不包含该方法,所以我可能引用了错误的软件包。
我愿意接受任何建议,如何从.NET Core 2.0项目中加载所有解决方案程序集及其类型。
提前感谢!
Type[]
集合中。我可以使用
AppDomain.CurrentDomain.GetAssemblies();
,但这会获取所有引用和使用的程序集。在我的情况下,我想获取所有被引用但不一定被使用的程序集。问题在于JIT编译正在删除未使用的项目的引用,因此在这种情况下,这种方法将无法工作。另一个选择是使用
Assembly.GetExecutingAssembly().Location
获取DLL的位置,然后加载所有程序集。但是,当我想使用.GetTypes()
时,它会抛出来自类型System.Reflection.ReflectionTypeLoadException
的异常,然后我得到了加载器异常System.IO.FileNotFoundException: Could not load file or assembly Microsoft.EntityFrameworkCore
。问题在于它试图使用找不到的库,显然使用Assembly.LoadFrom(dll)
加载DLL似乎也没有加载依赖项(库)。我找到的是 BuildManager.GetReferencedAssemblies,根据我目前的阅读,它表示这可能有用并且可以获取所有引用,即使它们没有被使用,因此我也在MsBuild库中找到了它,但不包含该方法,所以我可能引用了错误的软件包。
我愿意接受任何建议,如何从.NET Core 2.0项目中加载所有解决方案程序集及其类型。
提前感谢!