views:

148

answers:

2

Does anyone know if there is a tool to get all assembly information given an assembly. Prefereably in XML format.

Information needed:

  • Full namespaced assembly name
  • Title
  • Culture
  • Configuration
  • Version
  • Informational version
  • Description
  • Company
  • Product
  • Copyright
  • Trademark
A: 

You could probably use .NET Reflector. I don't know that it has an XML export but I don't see why you couldn't add it, or write a tool yourself. It's quite easy to iterate over the attributes and extract this kind of information.

Jeff Yates
+3  A: 
    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();
        }
    }

This should get you started. You can add error handling and stuff but this should work.

BFree
Thanks for the effort you did put into this. Really helpful!
Serge van den Oever