public static string MakeAssemlbyInfo(Assembly a, netz.GenData genData) { if(a == null) return null; lastEXE = a; bool versionSet = false; string NL = Environment.NewLine; StringBuilder sb = new StringBuilder(); sb.Append("using System.Reflection;").Append(NL); sb.Append("using System.Runtime.CompilerServices;").Append(NL); foreach(object att in a.GetCustomAttributes(true)) { if(att is System.Reflection.AssemblyTitleAttribute) { GenStringAttrib(ref sb, "AssemblyTitle", ((System.Reflection.AssemblyTitleAttribute)att).Title); } else if(att is System.Reflection.AssemblyDescriptionAttribute) { GenStringAttrib(ref sb, "AssemblyDescription", ((System.Reflection.AssemblyDescriptionAttribute)att).Description); } else if(att is System.Reflection.AssemblyConfigurationAttribute) { GenStringAttrib(ref sb, "AssemblyConfiguration", ((System.Reflection.AssemblyConfigurationAttribute)att).Configuration); } else if(att is System.Reflection.AssemblyCompanyAttribute) { GenStringAttrib(ref sb, "AssemblyCompany", ((System.Reflection.AssemblyCompanyAttribute)att).Company); } else if(att is System.Reflection.AssemblyProductAttribute) { GenStringAttrib(ref sb, "AssemblyProduct", ((System.Reflection.AssemblyProductAttribute)att).Product); } else if(att is System.Reflection.AssemblyCopyrightAttribute) { GenStringAttrib(ref sb, "AssemblyCopyright", ((System.Reflection.AssemblyCopyrightAttribute)att).Copyright); } else if(att is System.Reflection.AssemblyTrademarkAttribute) { GenStringAttrib(ref sb, "AssemblyTrademark", ((System.Reflection.AssemblyTrademarkAttribute)att).Trademark); } else if(att is System.Reflection.AssemblyCultureAttribute) { GenStringAttrib(ref sb, "AssemblyCulture", ((System.Reflection.AssemblyCultureAttribute)att).Culture); } else if(att is System.Reflection.AssemblyVersionAttribute) { versionSet = true; GenStringAttrib(ref sb, "AssemblyVersion", ((System.Reflection.AssemblyVersionAttribute)att).Version); } else if(att is System.Reflection.AssemblyKeyFileAttribute) { if(genData.KeyGetFromAttributes) { GenStringAttrib(ref sb, "AssemblyKeyFile", ((System.Reflection.AssemblyKeyFileAttribute)att).KeyFile); } } else if(att is System.Reflection.AssemblyKeyNameAttribute) { if(genData.KeyGetFromAttributes) { GenStringAttrib(ref sb, "AssemblyKeyName", ((System.Reflection.AssemblyKeyNameAttribute)att).KeyName); } } else if(att is System.Reflection.AssemblyAlgorithmIdAttribute) { if(genData.KeyGetFromAttributes) { GenAttrib(ref sb, "AssemblyAlgorithmId", ((AssemblyAlgorithmIdAttribute)att).AlgorithmId.ToString("D")); } } else if(att is System.Reflection.AssemblyDelaySignAttribute) { if(genData.KeyGetFromAttributes) { GenAttrib(ref sb, "AssemblyDelaySign", (((System.Reflection.AssemblyDelaySignAttribute)att).DelaySign ? "true" : "false")); } } #region removed /* else if(att is System.Reflection.AssemblyDefaultAliasAttribute) { GenStringAttrib(ref sb, "AssemblyDefaultAlias", ((System.Reflection.AssemblyDefaultAliasAttribute)att).DefaultAlias); } else if(att is System.Reflection.AssemblyFileVersionAttribute) { GenStringAttrib(ref sb, "AssemblyFileVersion", ((System.Reflection.AssemblyFileVersionAttribute)att).Version); } else if(att is System.Reflection.AssemblyInformationalVersionAttribute) { GenStringAttrib(ref sb, "AssemblyInformationalVersion", ((System.Reflection.AssemblyInformationalVersionAttribute)att).InformationalVersion); } else if(att is System.Reflection.AssemblyFlagsAttribute) { // int GenAttrib(ref sb, "AssemblyFlags", ((AssemblyFlagsAttribute)att).Flags.ToString("D")); } else if(att is System.Diagnostics.DebuggableAttribute) { System.Diagnostics.DebuggableAttribute da = (System.Diagnostics.DebuggableAttribute)att; string dav = string.Empty + (da.IsJITTrackingEnabled ? "true" : "false") + "," + (da.IsJITOptimizerDisabled ? "true" : "false"); GenAttrib(ref sb, "System.Diagnostics.DebuggableAttribute", dav); } else if(att is System.CLSCompliantAttribute) { GenAttrib(ref sb, "System.CLSCompliantAttribute", ((System.CLSCompliantAttribute)att).IsCompliant ? "true" : "false"); } else if(att is System.Runtime.InteropServices.GuidAttribute) { GenStringAttrib(ref sb, "System.Runtime.InteropServices.GuidAttribute", ((System.Runtime.InteropServices.GuidAttribute)att).Value); } */ #endregion removed else { string t = att.ToString(); try { string prefix = "System.Reflection."; if(t.StartsWith(prefix)) t = t.Substring(prefix.Length, t.Length - prefix.Length); } catch{} if(!MatchUserDefined(t, genData.UserAssemblyAttributes)) { if(genData.ReportEXEAttributes) { Netz.PrintWarning("1003 Unhandled main assembly attribute : " + t + " ?", null); } } else { Logger.Log("! Matched user defined attribute name : " + t); } } } if(!versionSet) { string[] data = a.FullName.Split(','); for(int i = 0; i < data.Length; i++) { if(data[i] == null) continue; string ver = data[i].Trim(',' , ' ').ToLower(); if(ver.StartsWith("version")) { int j = data[i].IndexOf('='); if(j > 0) { ver = ver.Substring(j, ver.Length - j); GenStringAttrib(ref sb, "AssemblyVersion", ver); versionSet = true; } } } } if(!versionSet) { sb.Append("[assembly: AssemblyVersion(\""); sb.Append("1.0.*"); sb.Append("\")]").Append(NL); } if(!genData.KeyGetFromAttributes) { bool keySet = false; if(genData.KeyFile != null) { keySet = true; GenStringAttrib(ref sb, "AssemblyKeyFile", genData.KeyFile); } if(genData.KeyName != null) { keySet = true; GenStringAttrib(ref sb, "AssemblyKeyName", genData.KeyName); } if(keySet) { GenAttrib(ref sb, "AssemblyDelaySign", (genData.KeyDelay ? "true" : "false")); } } sb.Append(NL).Append("// Add any other attributes here").Append(NL); return sb.ToString(); }
public static string MakeAssemblyInfo(string file, netz.GenData genData) { return MakeAssemlbyInfo(Assembly.LoadFrom(file), genData); }