【发布时间】:2009-03-23 17:36:25
【问题描述】:
有谁知道是否有工具可以获取给定程序集的所有程序集信息。最好是 XML 格式。
所需信息:
- 完整的命名空间程序集名称
- 标题
- 文化
- 配置
- 版本
- 信息版
- 说明
- 公司
- 产品
- 版权所有
- 商标
【问题讨论】:
标签: c# .net assemblies
有谁知道是否有工具可以获取给定程序集的所有程序集信息。最好是 XML 格式。
所需信息:
【问题讨论】:
标签: c# .net assemblies
public static class AssemblyExtensions
{
public static string InfoToXML(this Assembly assembly)
{
string name = assembly.FullName;
string title = String.Empty;
string description = String.Empty;
string company = String.Empty;
string culture = String.Empty;
string configuration = String.Empty;
string version = String.Empty;
string informationalVersion = String.Empty;
string product = String.Empty;
string trademark = String.Empty;
string copyright = String.Empty;
foreach (var attrib in assembly.GetCustomAttributes(false))
{
if (attrib is AssemblyTitleAttribute)
{
title = ((AssemblyTitleAttribute)attrib).Title;
}
if (attrib is AssemblyDescriptionAttribute)
{
description = ((AssemblyDescriptionAttribute)attrib).Description;
}
if (attrib is AssemblyCompanyAttribute)
{
company = ((AssemblyCompanyAttribute)attrib).Company;
}
if (attrib is AssemblyCultureAttribute)
{
culture = ((AssemblyCultureAttribute)attrib).Culture;
}
if (attrib is AssemblyConfigurationAttribute)
{
configuration = ((AssemblyConfigurationAttribute)attrib).Configuration;
}
if (attrib is AssemblyVersionAttribute)
{
version = ((AssemblyVersionAttribute)attrib).Version;
}
if (attrib is AssemblyInformationalVersionAttribute)
{
informationalVersion = ((AssemblyInformationalVersionAttribute)attrib).InformationalVersion;
}
if (attrib is AssemblyProductAttribute)
{
product = ((AssemblyProductAttribute)attrib).Product;
}
if (attrib is AssemblyTrademarkAttribute)
{
trademark = ((AssemblyTrademarkAttribute)attrib).Trademark;
}
if (attrib is AssemblyCopyrightAttribute)
{
copyright = ((AssemblyCopyrightAttribute)attrib).Copyright;
}
}
StringBuilder builder = new StringBuilder();
StringWriter stringWriter = new StringWriter(builder);
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("AssemblyInformation");
xmlWriter.WriteElementString("AssemblyName", name);
xmlWriter.WriteElementString("Title", title);
xmlWriter.WriteElementString("Description", description);
xmlWriter.WriteElementString("Company", company);
xmlWriter.WriteElementString("Culture", culture);
xmlWriter.WriteElementString("Configuration", configuration);
xmlWriter.WriteElementString("Version", version);
xmlWriter.WriteElementString("InformationalVersion", informationalVersion);
xmlWriter.WriteElementString("Product", product);
xmlWriter.WriteElementString("Trademark", trademark);
xmlWriter.WriteElementString("Copyright", copyright);
xmlWriter.WriteEndElement();
return builder.ToString();
}
}
这应该可以帮助您入门。您可以添加错误处理和其他内容,但这应该可以工作。
【讨论】:
您或许可以使用.NET Reflector。我不知道它有一个 XML 导出,但我不明白为什么你不能添加它,或者自己编写一个工具。迭代属性并提取此类信息非常容易。
【讨论】: