.NET中的程序集
参考:http://blog.sina.com.cn/s/blog_7ade159d0102wmg9.html
- 程序集(Assembly,装配件,.NET程序集)
- 程序集是应用程序的部署单元,.NET应用程序包含一个或多个程序集。
- 通常编译出来的dll、exe的.NET可执行程序都是程序集
- .NET程序集包含元数据,这些元数据描述了程序集中定义的所有类型及其成员的信息,即方法、属性、事件和字段。
- ildasm.exe这种反编译工具用到了?
- ildasm.exe这种反编译工具用到了?
- 与命名空间比较
- 程序集
- 类库的物理组织形式
- 通过右击reference添加引用来引入外部库
- 目的:程序的物理组织,供CLR使用,这些exe、dll中包含一些程序集信息
- 命名空间
- 类库的逻辑组织形式
- 通过using语句来引入外部库
- 目的:避免产生类名冲突,人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象
- 只有同时指定类型所在的命名空间及实现该类型的程序集,才能完全限定该类型。
- 在一个程序集中可以有不同的命名空间,同一个命名空间也可以分布在多个程序集上。命名空间只是类型名的一种扩展,它属于类型名的范畴。
- 每个project(如果是library,编译后生成一个对应的dll或exe)都会有一些程序集信息(显示在dll或exe的右击属性菜单中)
- 作用:通过特性(Attribute)来设置程序集(dll文件)的常规信息,供查看或作为配置信息供程序内部使用。
- 对应到VS的项目树中,每个project->Properties->AssemblyInfo.cs文件中都包含了对应的这些程序集信息(一些Attribute)
- 这个名为AssemblyInfo.cs的文件是vs在.net工程的Properties文件夹下自动生成的,一般情况下我们很少直接改动该文件。
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("TestWinform")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Licence Owner")]
[assembly: AssemblyProduct("TestWinform")]
[assembly: AssemblyCopyright("Copyright © Licence Owner 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("1d2f88e5-afc7-468d-a71b-078e27edf595")] // 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 Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
- 我们实际上通过另一个形式操作该AssemblyInfo.cs文件。那就是通过在鼠标右键点击项目的属性进入“应用程序”->“程序集信息”,然后修改信息。
- 程序中如何读取assembly特性
Type t = typeof(Program);
AssemblyProductAttribute productAttr = t.Assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), true)[0] as AssemblyProductAttribute;
Console.WriteLine(productAttr.Product);
- 注意
- [assembly:AssemblyProduct("")] 特性不限于在AssemblyInfo.cs文件中使用,而是可以在任何的.cs文件中使用。
- 对于同一个特性,程序集中仅能设置一次,否则编译时将报错。
- 举例
- [assembly:log4net.Config.XmlConfigurator(Watch=true)] 其实就是配置log4net框架从哪里读配置文件而已,当然这句也可以写到AssemblyInfo.cs文件中统一管理。
.NET中的程序集的更多相关文章
- CLR中的程序集加载
CLR中的程序集加载 本次来讨论一下基于.net平台的CLR中的程序集加载的机制: [注:由于.net已经开源,可利用vs2015查看c#源码的具体实现] 在运行时,JIT编译器利用程序集的TypeR ...
- ASP.NET Web Froms开发模式中实现程序集的延迟加载
延迟加载是一个很大的诱惑,可以达到一些比较好的效果,比如: 1.在实体框架中,由于关联数据的数量和使用时机是不确定的,通过延迟加载,仅在使用的时候去执行关联数据的查询操作,减少无谓的数据查询操作,可以 ...
- 【笔试&面试】C#中的程序集
1. C#中的程序集(Assembly) 答:程序集是包含一个或多个类型定义文件和资源文件的集合.它允许我们分离可重用类型的逻辑表示和物理表示. 程序集是一个可重用.可实施版本策略和安全策略 ...
- 在Win7中安装程序集到GAC
原文:在Win7中安装程序集到GAC 微软为提高系统安全,自Vista推出后,在Windows系统中加入了一个新的东东——UAC(User Account Control),这样一个新的技术使得许多操 ...
- Net中获取程序集路径
从内存中加载的程序集,无路径 IIS中路径 protected void Page_Load(object sender, EventArgs e) { Response.Write(&quo ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- C# 获取文件路径,读取项目中某程序集下文件
获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: stri ...
- C#.NET中的程序集版本
更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年8月22日. 在Visual Studio中查看程序集版本 在程序运行中获得程序集版本信息 除了在Visual ...
- C#中获取程序集版本号的方法
我的方法: string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 方法一: public v ...
- .NET中的程序集(Assembly)
在.NET 中,新引入了一个程序集的概念,就是指经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为.dll,或者是.exe的格式,但是要注意,它们跟普通意 ...
随机推荐
- DIV+CSS+JS实现图片<ul><li></li></ul>无缝滚动代码
(含上下左右滚动代码) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- 【知识结构】最强Thymeleaf知识体系
在开发一个小项目的时候,使用的是Spring Boot,Spring Boot 官方推荐的前端模板是thymeleaf, 花了两天时间将官方的文档看完并总结了下知识体系结构.转载请注明出处,https ...
- Oracle行转列LISTAGG函数
工作过程中需要将查询的数据分组并显示在一行.以往的工作经验,在sql server中可以用for xml path来实现. 现提供Oracle数据库的行转列方式 oracle11g官方文档简介如下: ...
- NUnit属性
TestFixture:它标记一个类包含测试,申明该类是用来测试的.一般用在class的定义之前: Test一般是放在method之前,表示对该方法的测试:如前一篇文章所示的class. SetUp/ ...
- POJ2187(凸包+旋转卡壳)
这道题目的大意是给出一组二维空间的顶点,计算其中距离最远的两个顶点之间的距离. 先说明凸包的概念和求法. 定义:对于多边形P,若将P中任意的两个点(包含边上)用一条线段连接,线段都落于该多边形中(含边 ...
- 使用laravel实现用户的登陆
首先在 php artisan 里面 make:auth 生产一个门脸类 修改配置文件里面要哪个模型登陆 模型得继承一下才能 先写一下注册 密码必须要使用laravel的加密方法,使用MD5都没用 l ...
- 新建tomcat的server服务,在左侧项目浏览处,右键空白的地方,选择new,再选择other选项
新建tomcat的server服务,在左侧项目浏览处,右键空白的地方,选择new,再选择other选项. 在弹出的窗口中,下拉滚动条找到Server,并单击next按钮. 在弹出的窗口中,找到第一个A ...
- 824. Goat Latin山羊拉丁文
[抄题]: A sentence S is given, composed of words separated by spaces. Each word consists of lowercase ...
- 605. Can Place Flowers零一间隔种花
[抄题]: Suppose you have a long flowerbed in which some of the plots are planted and some are not. How ...
- IFM设备 Linux方面资料
Github: https://github.com/lovepark/ifm3d

