Lesen Sie das AssemblyTitle -Attribut in ASP.NET
-
27-10-2019 - |
Frage
Ich verwende den Code unten, um das AssemblyTitle -Attribut von .NET -Apps, leider Assembly.GetEntryAssembly () immer NULL in ASP.NET -App zu lesen. Wie lesen Sie AssemblyTitle in der ASP.NET -App?
public static string Title
{
get
{
var attributes = Assembly.GetEntryAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0)
{
var titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title.Length > 0)
return titleAttribute.Title;
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().CodeBase);
}
}
Lösung
Sie müssen einen Typ haben, von dem Sie wissen, dass es in derselben Baugruppe definiert ist, die die enthält AssemblyTitle
. Dann können Sie:
typeof(MyType).Assembly.GetCustomAttributes
Beachten Sie, dass (für das, was ich weiß) keine andere kugelsichere Methode gibt.
Zum Beispiel verwenden HttpContext.Current
Funktioniert nicht, wenn Sie dies nicht während einer Webanforderung tun möchten (damit Sie dies bei der Antwort einer Benutzeraktion, aber nicht von einem separaten Thread oder einem statischen Initialisierer oder von oder von von oder aus tun können, oder von von einem statischen Initialisierer oder von global.asax
)
Einige ähnliche Lesungen (voller halber Erfolge):
GetEntryAssembly für Webanwendungen
Verwenden der Webanwendungsversionsnummer einer Baugruppe (ASP.net/c#)
Andere Tipps
Ich verwende Folgendes in der ASP.NET -Web -App:
if (ApplicationDeployment.IsNetworkDeployed)
return ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
EDIT: Entschuldigung, das ist nur die Version, nicht der Titel! Ich habe deine und meine Version kombiniert:
System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
Das erhält das Assembly -Titelattribut einwandfrei. Der Unterschied ist in GetExecutingAssembly()
gegen deine GetEntryAssembly()
.