ASP.NET Core MVC项目DLL加载报错:如何获取类型并加载视图?
我有一个ASP.NET Core MVC项目生成的ReflectionMvc.dll文件,该项目包含带有Index.cshtml视图的HomeController。我希望在另一个MVC项目中加载此.dll文件,以访问并查看Index页面。
我尝试了以下几种代码实现方式:
第一种尝试代码
var fileName = "ReflectionMvc.dll"; if (File.Exists(fileName)) { fileName = Path.GetFileName(fileName); Console.WriteLine(fileName + " found!"); Assembly assembly = Assembly.Load(fileName); Type[] types = assembly.GetTypes(); foreach(Type t in types) { Console.WriteLine(t.Name); } }
第二种尝试代码
Assembly assembly = Assembly.LoadFile(fileName);
使用该方法时出现如下错误:
System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。
未能加载文件或程序集“Microsoft.AspNetCore.Mvc.Razor, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”。系统找不到指定的文件。
第三种尝试代码
Assembly assembly = Assembly.Load(AssemblyName.GetAssemblyName(fileName));
使用该方法时出现另一错误:
System.IO.FileNotFoundException: 未能加载文件或程序集“ReflectionMvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL”。系统找不到指定的文件。
文件名称:“ReflectionMvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL”
在 System.Reflection.RuntimeAssembly.InternalLoad(ObjectHandleOnStack assemblyName, ObjectHandleOnStack requestingAssembly, StackCrawlMarkHandle stackMark, Boolean throwOnFileNotFound, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack retAssembly)
内容的提问来源于stack exchange,提问作者shuvo

