确定应用程序是WinForms还是WebForms

dum*_*mmy 6 c# webforms winforms

有没有办法确定在运行时运行的应用程序是WinForms还是Web?

[编辑]

如果我在我的类库中引用它们System.Web,实际上是否存在问题System.Windows.Forms

[摘要](到目前为止)

到目前为止我学到了什么:

  • HttpContext.Currentnull如果检查在异步线程,因此它不能可靠地在一个辅助方法使用.HttpRuntime.Cache并没有真正的帮助,因为我根本没有寻找缓存的上下文(或者我在这里错过了什么?).
  • 另一方面,System.Reflection.Assembly.GetEntryAssembly()似乎null在Web应用程序中返回,而在WinForms中则为null.这应该被视为理所当然吗?应该有更多这样的"黑客",那么使用哪一个?
  • 根据这个帖子,引用这两个System.WebSystem.Windows.Forms在一个帮助库中应该没问题.

Pat*_*ick 5

在编辑中,指定您的帮助程序类处于单独的程序集中.如果你想避免引用,你可以控制你的app.config文件,你可以放一个

<add key="typeOfSystem" value="Forms|Web"/>
Run Code Online (Sandbox Code Playgroud)

在您的项目中并使用它访问它

ConfigurationManager.AppSettings["typeOfSystem"]
Run Code Online (Sandbox Code Playgroud)

使用ConfigurationManager及其属性AppSettings.不要忘记System.Configuration在项目中添加引用.请注意,您将获得托管应用程序的AppSettings.通过这样做,您需要在父应用程序的app.config中添加一个键,或者如果未指定它,则输出一些错误或警告.


Ant*_*lev 4

检查是否HttpContext.Currentnull. 如果是,则它不是网络应用程序。