在ASP.NET中读取AssemblyTitle属性



我使用下面的代码来读取。net应用程序的AssemblyTitle属性,不幸的是,Assembly.GetEntryAssembly()在ASP中总是返回Null。如何在asp.net中读取AssemblyTitle。网络应用程序?

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

必须有一个类型,您知道该类型是在包含AssemblyTitle的同一程序集中定义的。然后你可以这样做:

typeof(MyType).Assembly.GetCustomAttributes

请注意(据我所知)没有其他的防弹方法。

例如,使用HttpContext.Current不工作,如果你想做的不是在一个web请求(所以你可以做一个用户动作的响应,但不是从一个单独的线程,或从静态初始化器,或从global.asax)

一些类似的阅读(全是一半成功):

gettentryassembly for web应用程序

使用程序集的Web应用程序版本号(ASP.NET/C#)

我在asp.net web应用程序中使用以下内容:

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

相关内容

  • 没有找到相关文章

最新更新