我使用下面的代码来读取。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()
。