Domanda

Io uso il codice qui sotto per leggere l'attributo AssemblyTitle di .NET applicazioni, purtroppo Assembly.GetEntryAssembly () restituisce sempre Null in ASP.NET app. Come leggere AssemblyTitle in 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);
      }
  }
È stato utile?

Soluzione

Si deve avere un tipo che si sa è definito nello stesso assembly che contiene il AssemblyTitle. Poi si può fare:

typeof(MyType).Assembly.GetCustomAttributes

Si noti che (per quanto ne so) non c'è alcun altro metodo di prova di proiettile.

Ad esempio, utilizzando HttpContext.Current non funziona se si vuole fare, non nel corso di una richiesta Web (così si può fare sulla risposta di un'azione dell'utente, ma non da un thread separato, o da un inizializzatore statico, o da global.asax)

Alcune letture simili (pieno di mezze successi):

GetEntryAssembly per le applicazioni web

Utilizzando il numero di versione di applicazioni Web da un assembly (ASP.NET/C#)

Altri suggerimenti

Io uso il seguente in asp.net web app:

if (ApplicationDeployment.IsNetworkDeployed)
    return ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

Modifica: Siamo spiacenti, questo è solo la versione, non il titolo! Ho unito la versione e la mia:

System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); 

che ottiene l'attributo title assemblaggio bene. La differenza è nel GetExecutingAssembly() contro vostra GetEntryAssembly().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top