La classe d'exception de C # a une propriété source qui est définie par défaut sur le nom de l'assembly.
Y at-il un autre moyen d’obtenir cette chaîne exacte (sans analyser une autre chaîne)?
J'ai essayé ce qui suit:
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
ou
typeof(Program).Assembly.GetName().Name;
J'utilise l'Assemblée pour définir le titre du formulaire en tant que tel:
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;
}
Vous pouvez essayer ce code qui utilise la propriété System.Reflection.AssemblyTitleAttribute.Title
:
((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false)).Title;
Vous pouvez utiliser la classe AssemblyName
pour obtenir le nom de l'assembly, à condition que vous ayez le nom complet de l'assembly:
AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().FullName).Name
ou
AssemblyName.GetAssemblyName(e.Source).Name
Assembly.GetExecutingAssembly (). Emplacement