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