最初让我们考虑相反的情况。如果我想枚举我在控制台应用程序中引用的程序集中的所有类型,我可以这样做
var assemblies = Directory.EnumerateFiles(
Directory.GetCurrentDirectory(),
"MyNamespace.*.dll",
SearchOption.TopDirectoryOnly)
.Select(Assembly.LoadFrom)
.SelectMany(x => x.GetTypes())
.ToList();
如此直截了当。我需要做相反的操作。假设我正在运行一个Console应用程序并引用类库MyClassLibrary
,我想在我的控制台应用程序中将所有类型都放在MyClassLibrary
中的函数中。问题是控制台应用程序不生成dll
个文件,它们只输出exe
个文件。有没有办法阅读类型?
答案 0 :(得分:1)
您可以使用Assembly.GetEntryAssembly
Assembly.GetEntryAssembly().GetTypes();
答案 1 :(得分:0)
.NET控制台应用程序的exe文件仍然是.NET程序集。它可以以相同的方式加载,但由于它已经加载,这有点无意义。
您可以使用AppDomain.CurrentDomain.GetAssemblies()
来获取当前App域中的所有已加载程序集(以及在控制台应用程序中 - 除非您创建另一个 - 只有一个),而不是浏览文件。