public void Ctor_MajorVersion_MinorVersion(int majorVersion, int minorVersion) { var attribute = new TypeLibVersionAttribute(majorVersion, minorVersion); Assert.Equal(majorVersion, attribute.MajorVersion); Assert.Equal(minorVersion, attribute.MinorVersion); }
/// <summary> /// Returns string name / string value pair of all attributes. /// for specified assembly /// </summary> /// <remarks> /// note that Assembly* values are pulled from AssemblyInfo file in project folder /// Trademark = AssemblyTrademark string /// Debuggable = true /// GUID = 7FDF68D5-8C6F-44C9-B391-117B5AFB5467 /// CLSCompliant = true /// Product = AssemblyProduct string /// Copyright = AssemblyCopyright string /// Company = AssemblyCompany string /// Description = AssemblyDescription string /// Title = AssemblyTitle string /// </remarks> /// <param name="a">Assembly to get the attributes from.</param> /// <returns>A string name / string value pair of all attributes.</returns> private NameValueCollection AssemblyAttribs(Assembly a) { NameValueCollection nvc = new NameValueCollection(); Regex r = new Regex(@"(\.Assembly|\.)(?<Name>[^.]*)Attribute$", RegexOptions.IgnoreCase); foreach (object attrib in a.GetCustomAttributes(false)) { try { var typeName = attrib.GetType().ToString(); var name = r.Match(typeName).Groups["Name"].ToString(); string value; switch (typeName) { case "System.CLSCompliantAttribute": value = ((CLSCompliantAttribute)attrib).IsCompliant.ToString(); break; case "System.Diagnostics.DebuggableAttribute": value = ((DebuggableAttribute)attrib).IsJITTrackingEnabled.ToString(); break; case "System.Reflection.AssemblyCompanyAttribute": value = ((AssemblyCompanyAttribute)attrib).Company; break; case "System.Reflection.AssemblyConfigurationAttribute": value = ((AssemblyConfigurationAttribute)attrib).Configuration; break; case "System.Reflection.AssemblyCopyrightAttribute": value = ((AssemblyCopyrightAttribute)attrib).Copyright; break; case "System.Reflection.AssemblyDefaultAliasAttribute": value = ((AssemblyDefaultAliasAttribute)attrib).DefaultAlias; break; case "System.Reflection.AssemblyDelaySignAttribute": value = ((AssemblyDelaySignAttribute)attrib).DelaySign.ToString(); break; case "System.Reflection.AssemblyDescriptionAttribute": value = ((AssemblyDescriptionAttribute)attrib).Description; break; case "System.Reflection.AssemblyInformationalVersionAttribute": value = ((AssemblyInformationalVersionAttribute)attrib).InformationalVersion; break; case "System.Reflection.AssemblyKeyFileAttribute": value = ((AssemblyKeyFileAttribute)attrib).KeyFile; break; case "System.Reflection.AssemblyProductAttribute": value = ((AssemblyProductAttribute)attrib).Product; break; case "System.Reflection.AssemblyTrademarkAttribute": value = ((AssemblyTrademarkAttribute)attrib).Trademark; break; case "System.Reflection.AssemblyTitleAttribute": value = ((AssemblyTitleAttribute)attrib).Title; break; case "System.Resources.NeutralResourcesLanguageAttribute": value = ((NeutralResourcesLanguageAttribute)attrib).CultureName; break; case "System.Resources.SatelliteContractVersionAttribute": value = ((SatelliteContractVersionAttribute)attrib).Version; break; case "System.Runtime.InteropServices.ComCompatibleVersionAttribute": ComCompatibleVersionAttribute x = (ComCompatibleVersionAttribute)attrib; value = x.MajorVersion + "." + x.MinorVersion + "." + x.RevisionNumber + "." + x.BuildNumber; break; case "System.Runtime.InteropServices.ComVisibleAttribute": value = ((ComVisibleAttribute)attrib).Value.ToString(); break; case "System.Runtime.InteropServices.GuidAttribute": value = ((GuidAttribute)attrib).Value; break; case "System.Runtime.InteropServices.TypeLibVersionAttribute": TypeLibVersionAttribute x1 = (TypeLibVersionAttribute)attrib; value = x1.MajorVersion + "." + x1.MinorVersion; break; case "System.Security.AllowPartiallyTrustedCallersAttribute": value = "(Present)"; break; default: value = typeName; break; } if (nvc[name] == null) { nvc.Add(name, value); } } catch (FormatException) { // Not sure we can do anything about FormatException } catch (NullReferenceException) { } } // add some extra values that are not in the AssemblyInfo, but nice to have // codebase try { nvc.Add("CodeBase", a.CodeBase.Replace("file:///", string.Empty)); } catch (NotSupportedException) { nvc.Add("CodeBase", "(not supported)"); } // build date DateTime dt = AssemblyBuildDate(a, false); nvc.Add("BuildDate", dt == DateTime.MaxValue ? "(unknown)" : dt.ToString("yyyy-MM-dd hh:mm tt")); // location try { nvc.Add("Location", a.Location); } catch (NotSupportedException) { nvc.Add("Location", "(not supported)"); } // version try { if (a.GetName().Version.Major == 0 && a.GetName().Version.Minor == 0) { nvc.Add("Version", "(unknown)"); } else { nvc.Add("Version", a.GetName().Version.ToString()); } } catch (Exception) { nvc.Add("Version", "(unknown)"); } nvc.Add("FullName", a.FullName); return(nvc); }