C#:为什么应用程序在System.Windows.Forms中?

时间:2009-11-02 09:31:25

标签: c# .net

Application中的System.Windows.Forms类有一些非常有用的属性。例如:

  • 产品名称
  • 的ProductVersion
  • 公司名称
  • ExecutablePath
  • StartupPath
  • CommonAppDataPath
  • CommonAppDataRegistry
  • UserAppDataPath
  • UserAppDataRegistry
  • LocalUserAppDataPath

为什么这些在System.Windows.Forms的课堂上?如果我想在控制台应用程序中访问CommonAppDataPath该怎么办?我是否必须引用 System.Windows.Forms.dll ,或者是否有控制台应用程序的替代方案?

5 个答案:

答案 0 :(得分:9)

对于路径,您还可以查看.NET中的Environment类:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

你可以要求提供大量“特殊”文件夹。

默认情况下,从“属性”文件夹中的“AssemblyInfo.cs”中提取CompanyName和其他选项 - 如果您有这样的文件,您也可以自己在代码中访问这些文件。

  嗯,你需要这些路径   附上公司名称和产品   虽然名字和你自己......

是的,这就是System.Windows.Forms程序集正在为您做的事情。如果你没有Winforms应用程序,你必须自己做,这是真的。

马克

答案 1 :(得分:2)

诸如“ProductName”之类的信息来自WinForms应用程序中的主程序集。 ASP.NET应用程序中没有“主”程序集。

如果您在没有配置文件的服务帐户下运行(通常可能是ASP.NET应用程序的情况),则不会有UserAppDataPath - 实际上尝试取消引用UserAppDataPath属性将引发异常。

由于这些原因,将此信息公开给ASP.NET应用程序是没有意义的。

答案 2 :(得分:1)

引自MSDN System.Windows.Forms命名空间文档:

System.Windows.Forms命名空间包含用于创建基于Windows的应用程序的类,这些应用程序充分利用Microsoft Windows操作系统中提供的丰富用户界面功能。

我可以看到Application类放在System.Windows.Forms命名空间中的唯一真正原因是它处理通常由Form控件发布的Windows消息。

答案 3 :(得分:0)

Application类启动与Windows窗体紧密相关的win32消息循环。

答案 4 :(得分:0)

您可以使用程序集命名空间

获取您正在查找的信息