.net 读取项目AssemblyInfo.cs属性值

We write all those code repetitively for dynamic assembly loading and checking to verify few properties on assemblies. It would be a great stop to write all such things in the assemblyinfo.cs (because it needs to completely describe the assembly that it is intended to serve for) You can define your About form of the application entirely using the AssemblyInfo.cs
How to use the following info:
AssemblyInfo ainfo = new AssemblyInfo();
frmAbout.Text = ainfo.Title;
frmAbout.menuAbt.Text = string.Format("&About{0}..",ainfo.Title);
frmAbout.Text = "About " + this.Owner.Text;
frmAbout.Icon = this.Owner.Icon;
//You can set the icon like this on the abt form.
frmAbout.pictureBox1.Image = this.Owner.Icon.ToBitmap();
frmAbout.lblTitle.Text = ainfo.Title;
frmAbout.lblVersion.Text = ainfo.Version;
frmAbout.lblCopyright.Text = ainfo.Copyright;
frmAbout.lblDescription.Text = ainfo.Description;
frmAbout.lblCodebase.Text = ainfo.CodeBase; 
下面是具体的实现代码。
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("Demo Title")]
[assembly: AssemblyDescription("Demo app that reads from the Assembly Info file description")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("World Company")]
[assembly: AssemblyProduct("Not for commercial use.")]
[assembly: AssemblyCopyright("open source (US)")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: CLSCompliant(true)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.1.1")]
# region "Class to get the information for AboutForm"
/* This class uses the System.Reflection.Assembly class to access assembly meta-data.
* This class is not a normal feature of AssmblyInfo.cs */
/// <summary>
/// AssemblyInfo class.
/// </summary>
public class AssemblyInfo
{
//Used by functions to access information from Assembly Attributes
/// <summary>
/// myType.
/// </summary>
private Type myType;
/// <summary>
/// Initializes a new instance of the <see cref="AssemblyInfo"/> class.
/// </summary>
public AssemblyInfo()
{
//Shellform here denotes the actual form.
myType = typeof(ShellForm);
}
/// <summary>
/// Gets the name of the assembly.
/// </summary>
/// <value>The name of the assembly.</value>
public String AssemblyName
{
get
{
return myType.Assembly.GetName().Name.ToString();
}
}
/// <summary>
/// Gets the full name of the assembly.
/// </summary>
/// <value>The full name of the assembly.</value>
public String AssemblyFullName
{
get
{
return myType.Assembly.GetName().FullName.ToString();
}
}
/// <summary>
/// Gets the code base.
/// </summary>
/// <value>The code base.</value>
public String CodeBase
{
get
{
return myType.Assembly.CodeBase;
}
}
/// <summary>
/// Gets the copyright.
/// </summary>
/// <value>The copyright.</value>
public String Copyright
{
get
{
Type att = typeof(AssemblyCopyrightAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyCopyrightAttribute copyattr = (AssemblyCopyrightAttribute)r[0];
return copyattr.Copyright;
}
}
/// <summary>
/// Gets the company.
/// </summary>
/// <value>The company.</value>
public String Company
{
get
{
Type att = typeof(AssemblyCompanyAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyCompanyAttribute compattr = (AssemblyCompanyAttribute)r[0];
return compattr.Company;
}
}
/// <summary>
/// Gets the description.
/// </summary>
/// <value>The description.</value>
public String Description
{
get
{
Type att = typeof(AssemblyDescriptionAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyDescriptionAttribute descattr = (AssemblyDescriptionAttribute)r[0];
return descattr.Description;
}
}
/// <summary>
/// Gets the product.
/// </summary>
/// <value>The product.</value>
public String Product
{
get
{
Type att = typeof(AssemblyProductAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyProductAttribute prodattr = (AssemblyProductAttribute)r[0];
return prodattr.Product;
}
}
/// <summary>
/// Gets the title.
/// </summary>
/// <value>The title.</value>
public String Title
{
get
{
Type att = typeof(AssemblyTitleAttribute);
object[] r = myType.Assembly.GetCustomAttributes(att, false);
AssemblyTitleAttribute titleattr = (AssemblyTitleAttribute)r[0];
return titleattr.Title;
}
}
/// <summary>
/// Gets the version.
/// </summary>
/// <value>The version.</value>
public String Version
{
get
{
return myType.Assembly.GetName().Version.ToString();
}
}
}
# endregion

(0)

相关推荐

  • iis6伪静态重写路径的配置步骤(.net项目)

    第一步:在网站项目涨添加URLRewriter程序集的引用和FormRewriterControlAdapter程序集引用. 注:如果项目中有分页,那么需要添加"FormRewriterControlAdapter"程序集引用,否则不需要添加该引用. 下载地址:http://www.net.cn/service/ziliao/cpsc/200906/3842.html(万网/帮助中心(M享主机UrlRewrite组件和使用手册)) 第二步:配置webconfig文件: 注意事项:1.参

  • 如何为asp.net网站项目添加子项目

    之前也曾经想过,这些功能根据不同处于项目中的不同文件夹内,比如会员的会在member,后台管理的会在admin文件夹,新闻的会在news文件夹.这样的话如果vs支持按不同文件夹生成不同dll,那我每次修改不同功能的不同文件只要上传对应的dll就可以了,不再需要上传整个website的dll. 不过想法是美好的,事实是残酷的.vs并不支持这样的功能.所以在功能直接交互和文件共享并不多的功能上,我采取了重新建立一个projects的方法,比如把后台管理剥离出来,新建一个admin的website,这

  • 关于有些Asp.net项目发布后出现网址乱码的解决方法

    当我输入网站域名,打开网页后url中会跟一段"乱码" 复制代码 代码如下: http://www.XXXX.com/(S(jnzpixfqi5rge5rnl45vdb45))/index.aspx 最后在查看web.config时看到了一句 <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="d

  • 使用.NET命令行编译器编译项目(如ASP.NET、C#等)

    源程序最好有.csproj或.vbproj文件,没有的话,要花些时间调试 下面我以VB.NET做示例讲解一下: 从proj我们可以获取以下有用信息 Settings小节中有很多配置选项,对应一些编译器选项 <References>小节中是项目的引用,第3方类库最好用绝对路径 <Imports>小节中是要导入的一些命名空间 <Files>小节中有项目的所有文件,选取 BuildAction = "Compile"的文件 用vbc测试了一下,很容易,注意

  • 创建一个完整的ASP.NET Web API项目

    Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,借助于此项目模板提供的向导,我们可以"一键式"创建一个完整的ASP.NET Web API项目.在项目创建过程中,Visual Studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用. 一.通过VS2013..NET 4.5.1创建一个Web API项目 1.解决方案下面新建项目 2.选择项

  • ASP.NET Core新建项目教程(3)

    ASP.NET Core - 新建项目 在这一章,我们将讨论如何在Visual Studio中创建一个新项目. 只要你安装了Visual Studio 2015的.net core工具,您就可以开始构建一个新的ASP.net core应用程序,从菜单选择:File → New Project 在新项目对话框中,您将看到以下三个不同的Web项目模板 ASP.NET Web Application−简单的ASP.NET应用程序的模板. ASP.NET Core Web Application (.N

  • ASP.NET Core项目结构教程(4)

    在这一章,我们将讨论 ASP.NET Core项目在文件系统上的组成方式以及不同的文件和目录都是如何协同工作的. 让我们打开在前一章创建的FirstAppDemo项目. 在解决方案资源管理器窗口中,右击解决方案节点并选择"Open Folder in File Explorer". 您将看到在它的根目录下有两个文件︰ FirstAppDemo.sln和global.json. FirstAppDemo.sln文件是一个解决方案文件.Visual Studio多年来在默认情况下一直使用s

  • asp.net 不用组件的URL重写(适用于较大型项目)

    先在网站根目录下建立一个config文件夹,再在此文件架下建立一个urls.config文件,这里记录url的配置信息代码如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <urls> <rewrite name="default" path="/default-{0}-{1}.aspx" pattern = "/default-

  • 使用ASP.NET.4.5.1+MVC5.0 搭建一个包含 Ninject框架 项目

    1.创建一个空白解决方案 2.添加一个类库 名称为XXX.Domain 3.添加一个ASP.MVC名称为XXX.WebUI 4.选着空模版,勾选MVC核心引用 5.添加单元测试项目XXX.UntiTests 6.在程序包控制台里面输入以下代码 复制代码 代码如下: Install-Package Ninject -version 3.0.1.10 -projectname Toad.WebUI Install-Package  Ninject.Web.Common  -version  3.0.

  • .net 读取项目AssemblyInfo.cs属性值

    We write all those code repetitively for dynamic assembly loading and checking to verify few properties on assemblies. It would be a great stop to write all such things in the assemblyinfo.cs (because it needs to completely describe the assembly that

  • Python练习之读取XML节点和属性值的方法

    面试题 有一个test.xml文件,要求读取该文件中products节点的所有子节点的值以及子节点的属性值. test.xml文件: <!-- products.xml --> <root> <products> <product uuid='1234'> <id>10000</id> <name>苹果</name> <price>99999</price> </product&g

  • 微信小程序商城项目之商品属性分类(4)

    续上一篇的文章:微信小程序之购物数量加减 -- 微信小程序实战商城系列(3) 所提及的购物数量的加减,现在说说商品属性值联动选择. 为了让同学们有个直观的了解,到电商网截了一个图片,就是红圈所示的部分 现在就为大家介绍这个小组件,在小程序中,该如何去写 下图为本项目的图: wxml: <view class="title">商品属性值联动选择</view> <!--options--> <view class="commodity_a

  • C#读取XML中元素和属性值的实现代码

    1.school.xml,如下: 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?><!--启明培训学校学生信息:    1.一年级学生    2.二年级学生    -->  <school name="启明培训学校">    <grades>     <grade id="1" name="一年级">

  • springboot如何读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId>

  • C#通过XML节点属性/属性值读取写入XML操作代码实例

    1.XML的内容如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?><root>  <title>    <settings id = "0" name = "显示文字">欢迎您!智慧服务,互动体验......</settings>    <settings id = "1" name

  • C#通过属性名称获取(读取)属性值的方法

    之前在开发一个程序,希望能够通过属性名称读取出属性值,但是由于那时候不熟悉反射,所以并没有找到合适的方法,做了不少的重复性工作啊! 然后今天我再上网找了找,被我找到了,跟大家分享一下. 其实原理并不复杂,就是通过反射利用属性名称去获取属性值,以前对反射不熟悉,所以没想到啊~ 不得不说反射是一种很强大的技术.. 下面给代码,希望能帮到有需要的人. using System; using System.Collections.Generic; using System.Linq; using Sys

  • C#实现读取匿名对象属性值的方法示例总结

    本文实例讲述了C#实现读取匿名对象属性值的方法.分享给大家供大家参考,具体如下: 通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属性值. var objUser = new {Name="Lilei",Age=18 }; //此时可直接读取匿名类属性 Console.WriteLine("Name:" + objUser.Name);// Name:Lilei 但当将匿名对象转换成object后,就无法直接读取属性值了: static object Ge

  • @PropertySource 无法读取配置文件的属性值解决方案

    原来Person类这样写: 只写了@PropertySource注解 @Component @PropertySource(value = {"classpath:person.properties"}) public class Person { private String lastName; private int age; private boolean boss; private Date birth; private Map<String,Object> map

  • 基于Spring boot @Value 注解注入属性值的操作方法

    本文主要介绍Spring @Value 注解注入属性值的使用方法的分析,文章通过示例代码非常详细地介绍,对于每个人的学习或工作都有一定的参考学习价值 在使用spring框架的项目中,@Value是经常使用的注解之一.其功能是将与配置文件中的键对应的值分配给其带注解的属性.在日常使用中,我们常用的功能相对简单.本文使您系统地了解@Value的用法. @Value注入形式 根据注入的内容来源,@ Value属性注入功能可以分为两种:通过配置文件进行属性注入和通过非配置文件进行属性注入. 非配置文件注

随机推荐