public static string GetAssemblyVersion(Assembly assembly, string assemblyFileName) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assemblyFileName); object[] attr = assembly.GetCustomAttributes(typeof(System.Reflection.AssemblyConfigurationAttribute), false); System.Reflection.AssemblyConfigurationAttribute aca = (System.Reflection.AssemblyConfigurationAttribute)attr[0]; return(fvi.ProductVersion + aca.Configuration); }
/// <summary> /// 어셈블리의 빌드 구성(예: 정식 버전 또는 디버그 버전)을 구합니다. /// </summary> /// <param name="assembly">구하려는 어셈블리</param> /// <returns>어셈블리의 빌드 구성(예: 정식 버전 또는 디버그 버전)을 반환합니다.</returns> public static string GetAssemblyConfiguration(this Assembly assembly) { AssemblyConfigurationAttribute assemblyGetCustomAttributes = assembly.GetCustomAttributes <AssemblyConfigurationAttribute>().FirstOrDefault(); if (assemblyGetCustomAttributes != null) { return(assemblyGetCustomAttributes.Configuration); } return(string.Empty); }
private static void Initialize() { Assembly programMainAssembly = Assembly.GetEntryAssembly(); if (programMainAssembly == null) { throw new InvalidOperationException("Can't initialize program info. Entry assembly is null..."); } FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(programMainAssembly.Location); _version = fvi.ProductVersion; _name = fvi.ProductName; _company = fvi.CompanyName; object[] attr = programMainAssembly.GetCustomAttributes(typeof(System.Reflection.AssemblyConfigurationAttribute), false); if (attr.Length > 0) { System.Reflection.AssemblyConfigurationAttribute aca = (System.Reflection.AssemblyConfigurationAttribute)attr[0]; _configuration = aca.Configuration; } }
public AssemblyConfigurationAttributeTest () { //create a dynamic assembly with the required attribute //and check for the validity dynAsmName.Name = "TestAssembly"; dynAssembly = Thread.GetDomain ().DefineDynamicAssembly ( dynAsmName,AssemblyBuilderAccess.Run ); // Set the required Attribute of the assembly. Type attribute = typeof (AssemblyConfigurationAttribute); ConstructorInfo ctrInfo = attribute.GetConstructor ( new Type [] { typeof (string) } ); CustomAttributeBuilder attrBuilder = new CustomAttributeBuilder (ctrInfo, new object [1] { "Config" } ); dynAssembly.SetCustomAttribute (attrBuilder); object [] attributes = dynAssembly.GetCustomAttributes (true); attr = attributes [0] as AssemblyConfigurationAttribute; }
private string GetAssembly(Type type) { if (type.ToString() == "System.Reflection.AssemblyVersionAttribute") {//程序集版本号,要用这个方法获取,无法用下边的方法获取,原因不知 return(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()); } object[] attributes = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes(type, false); if (attributes.Length > 0) { if (type.ToString() == "System.Reflection.AssemblyCompanyAttribute") { #region//公司 System.Reflection.AssemblyCompanyAttribute company = (System.Reflection.AssemblyCompanyAttribute)attributes[0]; if (company.Company != "") { return(company.Company); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyCopyrightAttribute") { #region//版权 System.Reflection.AssemblyCopyrightAttribute company = (System.Reflection.AssemblyCopyrightAttribute)attributes[0]; if (company.Copyright != "") { return(company.Copyright); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyTitleAttribute") { #region//标题 System.Reflection.AssemblyTitleAttribute company = (System.Reflection.AssemblyTitleAttribute)attributes[0]; if (company.Title != "") { return(company.Title); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyDescriptionAttribute") { #region//备注 System.Reflection.AssemblyDescriptionAttribute company = (System.Reflection.AssemblyDescriptionAttribute)attributes[0]; if (company.Description != "") { return(company.Description); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyProductAttribute") { #region//产品名称 System.Reflection.AssemblyProductAttribute company = (System.Reflection.AssemblyProductAttribute)attributes[0]; if (company.Product != "") { return(company.Product); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyTrademarkAttribute") { #region//商标 System.Reflection.AssemblyTrademarkAttribute company = (System.Reflection.AssemblyTrademarkAttribute)attributes[0]; if (company.Trademark != "") { return(company.Trademark); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyConfigurationAttribute") { #region//获取程序集配置信息,具体什么内容,不清楚 System.Reflection.AssemblyConfigurationAttribute company = (System.Reflection.AssemblyConfigurationAttribute)attributes[0]; if (company.Configuration != "") { return(company.Configuration); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyCultureAttribute") { #region//获取属性化程序集支持的区域性,具体什么内容,不清楚 System.Reflection.AssemblyCultureAttribute company = (System.Reflection.AssemblyCultureAttribute)attributes[0]; if (company.Culture != "") { return(company.Culture); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyVersionAttribute") { #region//程序集版本号 System.Reflection.AssemblyVersionAttribute company = (System.Reflection.AssemblyVersionAttribute)attributes[0]; if (company.Version != "") { return(company.Version); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyFileVersionAttribute") { #region//文件版本号 System.Reflection.AssemblyFileVersionAttribute company = (System.Reflection.AssemblyFileVersionAttribute)attributes[0]; if (company.Version != "") { return(company.Version); } #endregion } else if (type.ToString() == "System.Reflection.AssemblyInformationalVersionAttribute") { #region//产品版本号 System.Reflection.AssemblyInformationalVersionAttribute company = (System.Reflection.AssemblyInformationalVersionAttribute)attributes[0]; if (company.InformationalVersion != "") { return(company.InformationalVersion); } #endregion } } //如果没有 属性,或者 属性为一个空字符串,则返回 .exe 的名称 return(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)); }
internal static IEnumerable<KeyValuePair<string, object>> EnumerateMetadata(Assembly assembly) { ComponentName cname = ComponentName.FromAssemblyName(assembly.GetName()); var data = assembly.GetCustomAttributesData(); TargetFrameworkAttribute targetAttr = null; AssemblyConfigurationAttribute configAttr = null; AssemblyFileVersionAttribute fileAttr = null; foreach (var m in data) { var decl = m.Constructor.DeclaringType; if (decl == typeof(TargetFrameworkAttribute)) targetAttr = new TargetFrameworkAttribute((string) m.ConstructorArguments[0].Value); else if (decl == typeof(AssemblyConfigurationAttribute)) configAttr = new AssemblyConfigurationAttribute((string) m.ConstructorArguments[0].Value); else if (decl == typeof(AssemblyFileVersionAttribute)) fileAttr = new AssemblyFileVersionAttribute((string) m.ConstructorArguments[0].Value); } FrameworkName target = GetFrameworkName(assembly, targetAttr); string config = GetConfiguration(configAttr); string platform = GetPlatform(assembly); Version version = assembly.GetName().Version; ICustomAttributeProvider attributes; if (assembly.ReflectionOnly) attributes = new ReflectOnlyAssemblyAttributeProvider(assembly); else attributes = assembly; Uri myBase = null; Uri url = null; Uri license = null; var baseAttribute = CustomAttributeProvider.GetCustomAttribute<BaseAttribute>(attributes, false); if (baseAttribute != null) { myBase = baseAttribute.Source; } var licenseAttribute = CustomAttributeProvider.GetCustomAttribute<LicenseAttribute>(attributes, false); if (licenseAttribute != null) { license = licenseAttribute.Uri; } var ua = CustomAttributeProvider.GetCustomAttribute<UrlAttribute>(attributes, false); if (ua != null) { url = ua.Url; } return Properties.FromValue(new { name = cname.Name, configuration = config, assemblyName = cname, platform = platform, targetFramework = target, @base = myBase, license = license, url = url, version = version, }); }
private static string GetConfiguration(AssemblyConfigurationAttribute target) { // TODO Might be other ways to detect this using informational version, symbols if (target == null) return "release"; else return (target.Configuration ?? string.Empty).ToLowerInvariant(); }
public CodeAttributeDeclaration Convert(AssemblyConfigurationAttribute attribute) { return new CodeAttributeDeclaration(new CodeTypeReference(attribute.GetType()), new CodeAttributeArgument(new CodePrimitiveExpression(attribute.Configuration))); }