Зависит от того, как вы определяете «имя приложения».
Application.ExecutablePath
возвращает путь к исполняемому файлу, который запустил приложение, включая имя исполняемого файла, это означает, что если кто-то переименует файл, значение изменится.
Assembly.GetEntryAssembly().GetName().Name
возвращает простое имя сборки. Обычно это, но не обязательно, имя файла манифеста сборки, за вычетом его расширения
Итак, имя GetName (). Name кажется более примитивным.
Для более быстрого, я не знаю. Я предполагаю, что 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();
}
}
}