アセンブリ名を取得しています


190

C#の例外クラスには、デフォルトでアセンブリの名前に設定されるソースプロパティがあります。
(別の文字列を解析せずに)この正確な文字列を取得する別の方法はありますか?

私は以下を試しました:

catch(Exception e)
{
    string str = e.Source;         
    //"EPA" - what I want               
    str = System.Reflection.Assembly.GetExecutingAssembly().FullName;
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).FullName;
    //"EPA.Program"
    str = typeof(Program).Assembly.FullName;
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).Assembly.ToString();
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).AssemblyQualifiedName;
    //"EPA.Program, EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}

回答:


349
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name

または

typeof(Program).Assembly.GetName().Name;

VSは、使用の解決でエラーを表示します。Assembly.GetEntryAssembly()。GetName()。Name;を使用できます。
Butsaty、2016年

3
実際には、typeof(any).GetTypeInfo()。Assemblyである必要があります
Thaina

6

アセンブリを使用して、フォームのタイトルを次のように設定します。

private String BuildFormTitle()
{
    String AppName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
    String FormTitle = String.Format("{0} {1} ({2})", 
                                     AppName, 
                                     Application.ProductName, 
                                     Application.ProductVersion);
    return FormTitle;
}

1
GetEntryAssembly()がnullを返すOfficeアドインから呼び出していないことをうれしく思います
PandaWood

3

System.Reflection.AssemblyTitleAttribute.Titleプロパティを使用するこのコードを試すことができます:

((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false)).Title;


2

AssemblyNameアセンブリの完全な名前がわかっていれば、クラスを使用してアセンブリ名を取得できます。

AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().FullName).Name

または

AssemblyName.GetAssemblyName(e.Source).Name

MSDNリファレンス-AssemblyNameクラス


2
GetAssemblyNameメソッドのパラメーターが原因でエラーが発生しました。のAssembly.GetExecutingAssembly().Location代わりにすべきだったと思いますAssembly.GetExecutingAssembly().FullName
uzay95 2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.