2010-12-03 69 views

回答

2

不是真的,因为一个应用程序可能使用多个框架。你最好的选择可能是看哪个程序集加载到调用的AppDomain中,并从那里获取:)

0

关于我能想到为什么你需要这些信息的唯一原因是,如果你遇到“Invoke”问题,你需要在哪里等。一个winforms应用程序的GUI线程。

如果这是原因,那么这个被SynchronizationContext类抽象出来。

如果是其他原因,可能会有助于我们了解您为什么需要此信息。可能有一个类似的抽象已经创建,以满足您的需求。

+0

恐怕这是一个比特定需求更具推测性的问题。我所指的组件向其所在的infrastrucutre框架提供信息(类似于Environment.Context)。我试图确定哪些信息可以确定并公开给其他基础设施组件使用。例如,其运行的位置,以便组件可以使用区域特定的设置,部署类型,以便组件可以根据测试或生产情况采取不同的行为。 – gouldos 2010-12-03 10:17:34

1

正如@cwap所说,使用AppDomain.CurrentDomain.GetAssemblies()并检查是否找到WinForms或Asp。

foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) 
{ 
    if (assembly.Location.EndsWith("System.Windows.Forms.dll")) 
     Console.WriteLine("Winforms is loaded"); 
} 
相关问题