「アプリケーション名」の定義方法によって異なります。
Application.ExecutablePath
は、実行可能ファイルの名前を含め、アプリケーションを起動した実行可能ファイルのパスを返します。これは、ファイルの名前を変更すると値が変更されることを意味します。
Assembly.GetEntryAssembly().GetName().Name
は、アセンブリの単純名を返します。これは通常、アセンブリのマニフェストファイルのファイル名からその拡張子を引いたものです。
したがって、GetName()。名前はより綿密です。
速いものについてはわかりません。私はGetName()がReflectionを必要とするためExecutablePathがGetName()より速いと推測しますが、これは測定する必要があります。
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の場合、「WINWORD」ではなく「Microsoft Word」です。私の場合、アセンブリ名としてApplication Propertiesにハードコードした名前。それを得るためのアプローチは何でしょうか? – nawfal