代码之家  ›  专栏  ›  技术社区  ›  Serge van den Oever

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

  •  1
  • Serge van den Oever  · 技术社区  · 17 年前

    是否有人知道是否有工具可以获取给定部件的所有部件信息。最好是XML格式。

    所需信息:

    • 完整的命名空间程序集名称
    • 标题
    • 文化
    • 配置
    • 版本
    • 信息版本
    • 描述
    • 产品
    • 版权
    • 商标
    2 回复  |  直到 17 年前
        1
  •  6
  •   BFree    17 年前
        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
  •  0
  •   Jeff Yates    17 年前

    你可能需要 .NET Reflector