如何通过反射从控制台应用程序中获取Web应用程序组装信息

How to get web application assembly information from console application by reflection


我需要获取 controller/action 方法名称的列表
mvc 网络应用程序
从控制台应用程序。

所以我使用反射来做到这一点。
我将 Web 应用程序的 .dll 引用到控制台应用程序。
但是我无法从控制台应用程序源获取 Web 应用程序的程序集信息。

var check = AppDomain.CurrentDomain.GetAssemblies();
var assembly = AppDomain.CurrentDomain.GetAssemblies()
.First(x =>x.ManifestModule.Name == "RedStar.WebApp.dll");

抛出这个异常 'System.InvalidOperationException' 'Sequence contains no matching element'

程序集在使用之前不会加载 - 因此即使您在项目中引用了程序集,AppDomain.CurrentDomain.GetAssemblies() 仍未包含它(目前)。

您必须使用 Assembly webapp =Assembly.Load("RedStar.WebApp") 显式加载程序集。

请注意,这种加载程序集的方式使用 程序集名称 而不是文件名 - 您可以使用 Assembly.LoadFrom if you want to load a specific file, but this may have some unwanted side effects.