【问题标题】:Tool for enumerating assembly information to xml将程序集信息枚举到 xml 的工具
【发布时间】:2009-03-23 17:36:25
【问题描述】:

有谁知道是否有工具可以获取给定程序集的所有程序集信息。最好是 XML 格式。

所需信息:

  • 完整的命名空间程序集名称
  • 标题
  • 文化
  • 配置
  • 版本
  • 信息版
  • 说明
  • 公司
  • 产品
  • 版权所有
  • 商标

【问题讨论】:

    标签: c# .net assemblies


    【解决方案1】:
        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();
            }
        }
    

    这应该可以帮助您入门。您可以添加错误处理和其他内容,但这应该可以工作。

    【讨论】:

    • 感谢您为此付出的努力。真的很有帮助!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多