用于将程序集信息枚举到xml的工具

时间:2009-03-23 17:36:25

标签: c# .net assemblies

有没有人知道是否有工具可以在给定程序集的情况下获取所有装配信息。优选采用XML格式。

所需信息:

  • 完整命名空间的程序集名称
  • 标题
  • 文化
  • 配置
  • 信息版
  • 描述
  • 公司
  • 产品
  • 版权
  • 商标

2 个答案:

答案 0 :(得分:6)

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

这应该让你开始。您可以添加错误处理和内容,但这应该可以。

答案 1 :(得分:0)

您可以使用.NET Reflector。我不知道它有XML导出,但我不明白为什么你不能添加它,或者自己编写一个工具。迭代属性并提取这类信息非常容易。