AssemblyInfo

.NET Project的Properties文件夹下会自动生成一个AssemblyInfo.cs的文件,该文件包含的信息和项目->右键->属性->Application->Assembly Information完全一样。其作用是为程序集定义不同的属性。所有的属性都是基于.NET Framework中的System.Attribute。其语法如下:

[assembly:<attribute>(<setting>)]

AssemblyVersionAttribute

文件版本号的设置,其中Attribute可以省略 :

[assembly:AssemblyVersion("1.0")]
属性 描述
AssemblyTitle 程序集标题,默认为DLL库名
AssemblyDescription 关于程序集的简短描述
AssemblyCompany 程序集所属公司名称
AssemblyProduct 基于此程序集的产品名称
AssemblyCopyright 程序集所属版权
AssemblyTrademark 合法商标
AssemblyVersion 程序集的版本
AssemblyCulture 程序集支持的culture
AssemblyConfiguration 指定程序的生成配置,如发布或调试配置
ComVisible 控制程序集中所有类型对COM的可访问性

这些属性基本都允许用一个字符串来定义属性的值,AssemblyVersion例外,必须使用特定格式的字符串:Major.Minor.Build.Revision

Major和Minor分别为主、副版本号,版本号的的更改通常说明和先前的版本有不兼容的改动。例如,2.1版本和基于同样库的2.2版本有不兼容的地方。

构建号(Build)是一个程序集的相同副版本的不同编译设置。它偶尔也会出现不兼容的情况,但通常,如2.1.17和2.1.42版本的运行情况是一样的。

修订号(Revision)是用来固话bug或者其他偶发的更新,它通常不会破坏兼容性。

 

在程序中获取这些信息

原代码处(http://blog.sina.com.cn/s/blog_61c4c1f60100eira.html)

public class GetAssembly<T> {
private Type myType; public GetAssembly(Type myType)
{
this.myType = typeof(T);
} public string AssemblyName
{
get { return myType.Assembly.GetName().Name.ToString(); }
} public string AssemblyFullName
{
get { return myType.Assembly.GetName().FullName.ToString(); }
} public String CodeBase {
get {
return myType.Assembly.CodeBase;
}
} public String Version {
get {
return myType.Assembly.GetName().Version.ToString();
}
} public String Copyright {
get {
Type att = typeof(AssemblyCopyrightAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyCopyrightAttribute copyattr = (AssemblyCopyrightAttribute)r[0];
return copyattr.Copyright;
}
} public String Company {
get {
Type att = typeof(AssemblyCompanyAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyCompanyAttribute compattr = (AssemblyCompanyAttribute)r[0];
return compattr.Company;
}
} public String Configration {
get {
Type att = typeof(AssemblyConfigurationAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyConfigurationAttribute configattr = (AssemblyConfigurationAttribute)r[0];
return configattr.Configuration;
}
} public string TradeMark {
get {
Type att = typeof(AssemblyTrademarkAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyTrademarkAttribute aa = (AssemblyTrademarkAttribute)r[0];
return aa.Trademark;
}
} public string Culture {
get {
Type att = typeof(AssemblyCultureAttribute);
object[] a = myType.Assembly.GetCustomAttributes(att, false);
if (a.Length > 0) {
AssemblyCultureAttribute aa = (AssemblyCultureAttribute)a[0];
return aa.Culture;
} else {
return "No value";
}
}
} public String Description {
get {
Type att = typeof(AssemblyDescriptionAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyDescriptionAttribute descattr = (AssemblyDescriptionAttribute)r[0];
return descattr.Description;
}
} public String Product {
get {
Type att = typeof(AssemblyProductAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyProductAttribute prodattr = (AssemblyProductAttribute)r[0];
return prodattr.Product;
}
} public String Title {
get {
Type att = typeof(AssemblyTitleAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyTitleAttribute titleattr = (AssemblyTitleAttribute)r[0];
return titleattr.Title;
}
}
}

C#(Visual Studio) AssemblyInfo的更多相关文章

  1. C#——Visual Studio项目中的AssemblyInfo.cs文件包含的配置信息

    Visual Studio程序集项目中的AssemblyInfo.cs文件中的内容 using System.Reflection; using System.Runtime.CompilerServ ...

  2. Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

    目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...

  3. 创建Visual studio项目模板 vstemplate关键点纪要

    from:http://www.cnblogs.com/stickman/p/3454719.html 经过多次的实验,终于完美生成一个.VSIX的项目模板安装包,其中遇到不少问题与挫折,久经goog ...

  4. Visual Studio技巧之打造拥有自己标识的代码模板

    可能经过很多博客的介绍,大家都知道代码段的使用,使用代码段可以很方便地生成一些常用的代码格式,确实对我们开发很方便.在团队开发中或者在某些情况下我们经常可能还会希望使用Visual Studio生成的 ...

  5. [转]Visual Studio技巧之打造拥有自己标识的代码模板

    可能经过很多博客的介绍,大家都知道代码段的使用,使用代码段可以很方便地生成一些常用的代码格式,确实对我们开发很方便.在团队开发中或者在某些情况下我们经常可能还会希望使用Visual Studio生成的 ...

  6. .NET Core 在Visual Studio 2015 下的使用-MSDN

    .NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...

  7. 恼人的Visual Studio 2010崩溃重启问题

    上周时Visual Studio 2010突然出现崩溃现象.在源文件修改只要一编译,马上就崩溃,而且还不弹出任何异常窗口,严重影响软件开发工作. google了无数解决方案 试了下面这些方法: 1)h ...

  8. Visual Studio项目模板与向导开发

    在[Xamarin+Prism开发详解系列]里面经常使用到[Prism unity app]的模板创建Prism.Forms项目: 备注:由于Unity社区已经不怎么活跃,下一个版本将会有Autofa ...

  9. Visual Studio 自定义项目模板

    经常我们需要新建一个项目,然后新建我们的View文件夹,ViewModel文件夹,Model文件夹,还有把我们的ViewModelBase放入我们的VIewModel,如果还用框架,还需要加上好多. ...

随机推荐

  1. php生成二维码可以有以下几种方式

    1.google开放api $urlToEncode="http://bbs.lewanchina.com"; generateQRfromGoogle($urlToEncode) ...

  2. Struts2 - Action no cache

    整了两天,终于找到一个比较满意的答案了:如何让action不被浏览器缓存 写一个interceptor: package com.my.interceptor; import javax.servle ...

  3. 重绘TabControl

    本文转载自:http://blog.csdn.net/conmajia/article/details/7596718 作者:野比 (conmajia@gmail.com) 时间:May, 2012 ...

  4. LVS包转发模型和调度算法(转)

    LVS简介 Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,因此对于大负载的服务器来 讲, CPU.I/O处理能力很快会成为瓶颈.由于单台 ...

  5. Python 通过print_lol将数据保存到文件中

    1. 定义一个print_lol函数来控制列表的缩进和写入位置 import sys """this is a new fuction, which work for a ...

  6. android studio添加三方jar包

    jar包放项目的libs目录,然后tools,android,sync project with grade files即可.

  7. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  8. C#委托和事件讲解

    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每 ...

  9. UIActivityIndicatorView添加到UIButton上并响应事件

    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewSty ...

  10. POJ2226 Muddy Fields 二分匹配 最小顶点覆盖 好题

    在一个n*m的草地上,.代表草地,*代表水,现在要用宽度为1,长度不限的木板盖住水, 木板可以重叠,但是所有的草地都不能被木板覆盖. 问至少需要的木板数. 这类题的建图方法: 把矩阵作为一个二分图,以 ...