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);
        }
Ejemplo n.º 2
0
        /// <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);
        }