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"
}
답변
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
또는
typeof(Program).Assembly.GetName().Name;
답변
어셈블리를 사용하여 양식 제목을 다음과 같이 설정합니다.
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;
}
답변
System.Reflection.AssemblyTitleAttribute.Title
속성 을 사용하는이 코드를 시도 할 수 있습니다.
((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false)).Title;
답변
AssemblyName
어셈블리의 전체 이름이있는 경우 클래스를 사용하여 어셈블리 이름을 가져올 수 있습니다 .
AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().FullName).Name
또는
AssemblyName.GetAssemblyName(e.Source).Name
답변
Assembly.GetExecutingAssembly (). Location