Dipende da come si definisce 'nome applicazione'.
Application.ExecutablePath
restituisce il percorso per il file eseguibile che ha avviato l'applicazione, incluso il nome dell'eseguibile, questo significa che se qualcuno rinomina il file il valore cambia.
Assembly.GetEntryAssembly().GetName().Name
restituisce il nome semplice dell'assembly. Questo è solitamente, ma non necessariamente, il nome file del file manifest dell'assembly, meno la sua estensione
Quindi, il nome GetName(). Sembra più affidabile.
Per quello più veloce, non lo so. Presumo che ExecutablePath sia più veloce di GetName() perché in GetName() richiede Reflection, ma questo dovrebbe essere misurato.
EDIT:
cercare di costruire questa applicazione console, eseguirlo e quindi provare a rinominare il nome del file eseguibile utilizzando il file di Windows Explorer, eseguire nuovamente direttamente con il doppio click sul file eseguibile rinominato.
L'ExecutablePath riflette il cambiamento, il nome di Assemblea è sempre lo stesso
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();
}
}
}
Difficile indovinare cosa intendi per "nome applicazione", il contesto è importante. Entrambi restituiranno il nome del file * EXE *. La stessa cosa del nome del processo. –
@HansPassant oh, intendo il nome principale del mio prodotto. Ad esempio per MS Word, è "Microsoft Word" e non "WINWORD". Nel mio caso, il nome che ho codificato in Proprietà dell'applicazione come Nome assembly. Quale sarebbe l'approccio per ottenerlo? – nawfal