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);
      }
  }
War es hilfreich?

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().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top