這取決於你如何定義「應用程序名稱」。
Application.ExecutablePath
返回啓動應用程序,包括可執行文件名的可執行文件的路徑,這意味着如果有人重命名文件的價值變化。
Assembly.GetEntryAssembly().GetName().Name
返回集的簡單名稱。這通常是,但不一定,組件的清單文件的文件名,減去其擴展
因此,的GetName()。名稱似乎更affidable。
對於一個更快的,我不知道。我認爲ExecutablePath比GetName()更快,因爲在GetName()中需要Reflection,但這應該被測量。
編輯:
嘗試建立這個控制檯應用程序,運行它,然後嘗試重命名使用Windows資源管理器可執行文件名,再直接與重命名的可執行文件,雙擊運行。
的ExecutablePath反映了變化,大會名稱仍然是相同的
using System;
using System.Reflection;
using System.Windows.Forms;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Assembly.GetEntryAssembly().GetName().Name);
Console.WriteLine(Application.ExecutablePath);
Console.ReadLine();
}
}
}
很難想象「應用程序名稱」是什麼意思,上下文很重要。兩者都將返回EXE *文件名*。與進程名稱相同。 – 2012-03-03 11:30:03
@HansPassant哦,我的意思是我的產品的主要名稱。例如對於MS Word,它是「Microsoft Word」而不是「WINWORD」。在我的例子中,這個名稱是我在應用程序屬性中作爲程序集名稱硬編碼的。什麼是這樣的方法呢? – nawfal 2012-03-03 11:34:35