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

时间:2016-12-15 08:51:40

标签: asp.net-mvc reflection console-application


我需要获得一个控制器/动作方法名称列表
mvc web应用程序的 从控制台应用程序。

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

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

抛出这个例外' System.InvalidOperationException' '序列不包含匹配元素'

1 个答案:

答案 0 :(得分:0)

装配体在使用之前不会加载 - 因此即使您在项目中引用了装配体,AppDomain.CurrentDomain.GetAssemblies()也不包括它(<)。

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

请注意,这种加载程序集的方式使用程序集名称而不是文件名 - 如果要加载特定文件,可以使用Assembly.LoadFrom,但这可能有一些{ {3}}