Это зависит от того, как вы определяете «имя приложения».
Application.ExecutablePath
возвращает путь к исполняемому файлу, который запустил приложение, включая имя исполняемого файла, это означает, что если кто-то переименует файл, значение изменится.
Assembly.GetEntryAssembly().GetName().Name
возвращает простое название сборки. Обычно это, но не обязательно, имя файла манифеста сборки, минус его расширение.
Итак, имя GetName().
Для более быстрого, я не знаю. Я предполагаю, что ExecutablePath быстрее, чем GetName(), потому что в GetName() требуется Reflection, но это нужно измерить.
EDIT:
Попытка построить эту консоль приложение, запустить его, а затем попытаться переименовать имя исполняемого файла с помощью проводника файлов 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 * *. То же самое, что и имя процесса. –
@ HansPassant О, я имею в виду основное название моего продукта. Например, для MS Word это «Microsoft Word», а не «WINWORD». В моем случае это имя, которое я жестко запрограммировал в свойствах приложения как имя сборки. Каким будет подход к этому? – nawfal