Introduction
We have very good features in .Net based on the application version and customizations. Basically .Net provide unique assembly file for the common setting within the projects. And we can play with that file within code as well.
How I can say that?
The .Net provides few attributes based on the assembly manipulations. Suppose we want to know the current version of the product, then we want to access assembly file and get answer from that file. To achieve the product version attribute in the assembly file, we must use the AssemblyVersionAttribute attribute. And lot's of customization attribute exist in the .Net class library based on the assembly file.
List of commonly using attributes.
- AssemblyTitleAttribute
- AssemblyCompanyAttribute
- AssemblyVersionAttribute
- AssemblyProductAttribute
- AssemblyCopyrightAttribute
- AssemblyDescriptionAttribute
This article provides simple class with commonly using attribute, and gets information from the assembly about the product.
Let's see the class.
Let us see how to get product description from the assembly file
We want to get all custom attribute from the assembly file based on the AssemblyDescriptionAttribute.
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
After this, access the first attribute in the collections, and get the value from that
Conclusion
The .Net provides a good customization based on the assembly file. So please try to access all other attributes in the assembly file and enjoy.
productDescription = ((AssemblyDescriptionAttribute)customAttributes[0]).Description;
public static string ProductDescription
{
get
{
//get the entry assebly file for the product
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
//now get the customattribute for the AssemblyDescriptionAttribute
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
productDescription = ((AssemblyDescriptionAttribute)customAttributes[0]).Description;
}
if (string.IsNullOrEmpty(productDescription))
{
productDescription = string.Empty;
}
}
return productDescription;
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace AccessAssembly
{
public class ApplicationDetails
{
static string companyName = string.Empty;
/// Get the name of the system provider name from the assembly ///
public static string CompanyName
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
companyName = ((AssemblyCompanyAttribute)customAttributes[0]).Company;
}
if (string.IsNullOrEmpty(companyName))
{
companyName = string.Empty;
}
}
return companyName;
}
}
static string productVersion = string.Empty; ///
/// Get System version from the assembly ///
public static string ProductVersion
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyVersionAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
productVersion = ((AssemblyVersionAttribute)customAttributes[0]).Version;
}
if (string.IsNullOrEmpty(productVersion))
{
productVersion = string.Empty;
}
}
return productVersion;
}
}
如果取不出来productVersion,可以用下边方法。
**********************************************************
How to get assembly version
Assembly assembly = Assembly.GetExecutingAssembly();
/// 访问 Assembly.GetName().Version 将出错。
String version = assembly.FullName.Split(',')[1];
String fullversion = version.Split('=')[1];
If you are interested, you can also retrieve the Date and Time of the last build of your Silverlight application. Provided you define your Assembly Version like this: [assembly: AssemblyVersion("1.0.*")]
int build = int.Parse(fullversion.Split('.')[2]);
int revision = int.Parse(fullversion.Split('.')[3]);
DateTime buildDate = new DateTime(2000, 1, 1).AddDays(build).AddSeconds(revision * 2);
String fulldate = buildDate.ToLocalTime().ToString(CultureInfo.InvariantCulture);
**********************************************************************************
static string productName = string.Empty; ///
/// Get the name of the System from the assembly ///
public static string ProductName
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
productName = ((AssemblyProductAttribute)customAttributes[0]).Product;
}
if (string.IsNullOrEmpty(productName))
{
productName = string.Empty;
}
}
return productName;
}
}
static string copyRightsDetail = string.Empty; ///
/// Get the copyRights details from the assembly ///
public static string CopyRightsDetail
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
copyRightsDetail = ((AssemblyCopyrightAttribute)customAttributes[0]).Copyright;
}
if (string.IsNullOrEmpty(copyRightsDetail))
{
copyRightsDetail = string.Empty;
}
}
return copyRightsDetail;
}
}
static string productTitle = string.Empty; ///
/// Get the Product tile from the assembly ///
public static string ProductTitle
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
productTitle = ((AssemblyTitleAttribute)customAttributes[0]).Title;
}
if (string.IsNullOrEmpty(productTitle))
{
productTitle = string.Empty;
}
}
return productTitle;
}
}
static string productDescription = string.Empty; ///
/// Get the description of the product from the assembly ///
public static string ProductDescription
{
get
{
Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
if (assembly != null)
{
object[] customAttributes = assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if ((customAttributes != null) && (customAttributes.Length > 0))
{
productDescription = ((AssemblyDescriptionAttribute)customAttributes[0]).Description;
}
if (string.IsNullOrEmpty(productDescription))
{
productDescription = string.Empty;
}
}
return productDescription;
}
}
}
}