Чтение атрибута AssemblyTitle в ASP.NET - PullRequest
1 голос
/ 06 сентября 2011

Я использую приведенный ниже код для чтения атрибута AssemblyTitle приложений .NET, к сожалению, Assembly.GetEntryAssembly () всегда возвращает Null в приложении ASP.NET. Как читать AssemblyTitle в приложении ASP.NET?

  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);
      }
  }

Ответы [ 2 ]

4 голосов
/ 06 сентября 2011

У вас должен быть тип, который, как вы знаете, определен в той же сборке, которая содержит AssemblyTitle. Тогда вы можете сделать:

typeof(MyType).Assembly.GetCustomAttributes

Обратите внимание, что (насколько я знаю) другого пуленепробиваемого метода не существует.

Например, использование HttpContext.Current не работает, если вы хотите сделать это не во время веб-запроса (так что вы можете сделать это по реакции пользователя, но не из отдельного потока или статического инициализатора или от global.asax)

Несколько похожих чтений (полных успехов):

GetEntryAssembly для веб-приложений

Использование номера версии веб-приложения из сборки (ASP.NET/C#)

2 голосов
/ 06 сентября 2011

В веб-приложении asp.net я использую следующее:

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

Редактировать: Извините, это только версия, а не название!Я объединил твою версию и мою:

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

Это прекрасно подходит для атрибута заголовка сборки.Разница в GetExecutingAssembly() против вашего GetEntryAssembly().

...