C#(Visual Studio) AssemblyInfo

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;
            }
        }
}
时间: 2024-07-31 17:30:26

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

Windows Forms编程实战学习:第二章 欢迎使用Visual Studio

第二章 欢迎使用Visual Studio 1,AssemblyInfo文件 包含程序集的属性,向应用程序添加元数据 [assembly:<attribute>(<setting>)] AssemblyInfo常用属性 属性 描述 AssemblyTitle 程序集标题 AssemblyDescription 程序集描述 AssemblyCompany 程序集公司名 AssemblyProduct 程序集产品名 AssemblyCopyright 程序集的版权字符串 Assembl

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代

有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 关于

Visual Studio 2017 for Mac Preview

Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo 目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤,扛不住了,就把我的Mac放在公司. Mac之前为了运行VS,还买了一个PD虚拟机... 现在,我终于喝到鸡汤了--随着Visual Studio 2017的发布,for Mac的版本

【读书笔记《C# 开发实战1200例》】1.2 Visual Studio 开发环境使用

005.为程序设置版本和帮助信息 效果图: 1.新建Windows窗体应用程序WindowsFormsApplication1 2.找到AssemblyInfo.cs文件,编辑下就可以了 using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; //定义程序集清单的程序集标题自定义属性 [assembly: AssemblyTitle("为程序设置版本

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

from:http://www.cnblogs.com/stickman/p/3454719.html 经过多次的实验,终于完美生成一个.VSIX的项目模板安装包,其中遇到不少问题与挫折,久经google/baidu/自行摸索.终于解决所有问题. 现将心得记录总结如下 关于.vstemplate 1.可以通过导出模板直接生成.vstemplate及其他项目文件,以作为 模板的母版! 建议复制一份csprj文件做.vstemplate里面引用的模板项目文件. 2.TargetFileName/Ta

Visual Studio 项目模板制作(一)

我们编写项目的时候,很多时候都是在写重复代码,比如一个比较完整的框架,然后下面有很多代码都是重复的Copy,其实我们可以利用Visual Studio的模板替我们干这些活,我们只要关注项目具体的业务就可以了: 下面我们开始: 1.模板类别 项目模板.项模板 其中,项目模板是创建项目用的,项模板是创建项用的 项目模板: 项模板: 下面我们创建项目模板 首先,将要制作成模板的项目打开,选中项目,点击文件->导出项目模板,弹出导出模板向导 然后填写相关信息,点击完成,这样就导出模板成功了 现在,很关键

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

目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤,扛不住了,就把我的Mac放在公司. Mac之前为了运行VS,还买了一个PD虚拟机... 现在,我终于喝到鸡汤了——随着Visual Studio 2017的发布,for Mac的版本也诞生了. 下载地址大家可以去visualstudio官网下载,不过可能会有点儿慢,我上传了百度云.文章最后提供下载

基于visual studio的C#上位机编程学习笔记—— 01.visual studio 2012 安装与工程建立

首先先声明一下,这个系列的笔记是我在云课堂网站的,杜洋工作室的 C#入门设计课程所作下的笔记,仅供自己记录学习,相关链接:http://study.163.com/course/courseLearn.htm?courseId=983035#/learn/video?lessonId=1160254&courseId=983035 一.visual studio 2012 安装 下载部分就不介绍了,大家都懂的. 安装过程中,在要安装的可选功能选项中,如果只用该软件开发C#(C sharp),则全

[转]Visual Studio 2010单元测试(1)--运行和定义普通单元测试

Visual Studio 2010 运行和定义单元测试 在VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,并且支持数据驱动的单元测试. 1.建立单元测试项目 1.1.从被测试代码生成单元测试 1)实例:创建VC#模式下的控制台应用程序,工程名为CUnitTest 2)输入简单的加.减.乘.除函数代码,如下图所示 [csharp] view plaincopy namespace CUn