2009-03-23 3 views

답변

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

시작해야합니다. 오류 처리 및 물건을 추가 할 수 있지만이 작동합니다.

+0

노력에 감사드립니다. 정말 도움이되었습니다! –

0

. XML 내보내기가 있다는 것을 모릅니다. 왜 XML을 추가 할 수 없는지, 또는 직접 도구를 작성할 수없는 이유는 모르겠습니다. 속성을 반복하고 이러한 종류의 정보를 추출하는 것은 매우 쉽습니다.