程序集-llorch的Visual Studio基础教程(终)
通用的示例说明:
- 本系列博客只讨论工具的基础,不讨论任何语言。
- 甚至不讨论快捷键:-)
- 可以用鼠标就完成本教程
- IDE默认指代的是Visual Studio 2013 Community Edition。 本系列文章的结尾,你可以熟练地使用它写程序。
- 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要。
- 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[]、{}、/、>>、=、(,)。
-
检查一个设置项的表示方法为:
- [窗口名称]/{菜单名称}/{子菜单名称}/{设置项项名称}=设置项的值
- 例如默认的Debug配置:
- [主窗口]/{解决方案配置管理器}=Debug
- 检查多个设置项时,按照单个设置项的方式,逐一写出
- 检查一个设置项有多个值的时候,用括号包括并用内部的逗号分隔,如:
- [解决方案资源管理器]/{项目名称}/{引用}=(System,System.Core,System.Data,System.Xml)
-
执行一个左键单击序列,就是将最后的检查项换成”/”,例如退出IDE:
- [主窗口]/{文件}/{退出}/
-
右键菜单的连接符号为>>,例如刷新Windows桌面:
- [桌面]>>{刷新}/
- 弹出窗口中的设置项的表示与上类似
- MDI子窗口中设置项的表示与上类似,注意到在Visual Studio中,MDI子窗口的名称在它的左上角或者可能自动吸附到主窗口的四周
- 标题栏和状态栏作为菜单的推广,适用于上述表示方法
- 缺陷说明
- 欢迎反馈,mailto:cqwd2010@qq.com
- 作者的首选语言是C#
- 作者是软狗
- 作者的IDE没装中文语言包,所以有的名词翻译得不准确:-(
- 由于还没有厘清相关的证书问题,版权保留
- 系列文章没有提出或解决新的问题,目的只是科普
正文
Visual Studio带来的新的东西,就是对程序集的强大控制。
讨论之前的准备:VS2013开发人员命令提示 >> 外部工具
- [开始]/{所有程序}/{Visual Studio 2013}/{Visual Studio Tools}/,打开VS工具文件夹
- 右键点击快捷方式“VS2013 开发人员命令提示”,选择属性,复制“目标”对应的文本框里的内容
- [主窗口]/{工具}/{外部工具}/,呼出[外部工具窗口]
- [外部工具]/{添加}/
- [外部工具]/{菜单内容}=新工具 1/{标题}=VS2013命令提示
- [外部工具窗口]/{菜单内容}=VS2013命令提示/{命令}=%comspec%
- [外部工具窗口]/{菜单内容}=VS2013命令提示/{参数}=粘贴内容的参数部分(删除最前面的%comspec%)
- [外部工具窗口]/{菜单内容}=VS2013命令提示/{初始目录}=$(ProjectDir)
- [外部工具窗口]/{菜单内容}=VS2013命令提示/{应用}/
- 至此,就可以从IDE中调用[主窗口]/{工具}/{VS2013命令提示}/,每次打开的初始目录就是项目目录。其他的可选项还有二进制目录(视解决方案配置对应bin/Debug或bin/Release)、目标文件目录、解决方案目录等。
Visual Studio中的“项目”与程序集的关系
程序集在Windows操作系统中的具体形式,就是扩展名为DLL和EXE的.NET文件。一个.NET文件和传统的可执行文件(甚至传统的COM组件)不同。.NET文件有新的文件结构,最重要的是依赖于.Net Framework X.Y(2.0?3.5?4.0?)组件执行。
一个Visual Studio中的项目就对应于一个新的程序集。Visual Studio开发环境集成了自动化程度非常高的构建工具,同时屏蔽了大量的构建细节。作为Visual Studio用户可以简单地认为,一个Visual Studio中的项目就对应于它的构建目标,也就是输出的程序集。
一个项目“输出”的程序集可以引用许多的程序集,作为这个项目的“输入”。程序集的配置通常是每项目的,具体内容保存在“项目名.csproj ”文件当中。
私有和共享程序集
程序集通常被一个应用程序单独使用,在默认情况下不共享。通过一个特殊的位置(GAC,全局程序集缓存)可以在操作系统全局共享程序集,使得其上的应用程序都可以使用。
私有程序集
直接编译Viusal Studio模板“输出”的程序集是私有的。
通常没有注册到GAC的程序集都被认为是私有的。私有程序集的搜索路径在项目文件夹内部。这些程序集通常会跟着项目的部署一起移动(Click Once)。这种策略是有用的,因为有些功能需要依赖于特定版本的私有程序集,而这个版本与GAC的不匹配。
明确私有程序集的搜索路径很有必要,在向项目引入非GAC的第三方库时,要确保全部程序集及其依赖项已经进入项目的搜索路径。
共享程序集
顾名思义,共享程序集是指那些不用复制到项目文件夹内,依然可以支持项目运行的程序集。共享程序集主要是依靠CLR来自动进行管理的。
共享程序集一般安装到全局程序集缓存文件夹(GAC)中,它的程序集名是全局唯一的。使用强名工具(sn.exe)和GAC管理工具(gacutil.exe)可以将程序集注册到全局程序集缓存。
查看程序集的内容
一般用两种图形化的方法查看程序集的内容。
对象浏览器
[主窗口]/{视图}/{对象浏览器}/
这实际上是一种效率较高的编程手册,尤其是引入了第三方库的时候。
ildasm
打开VS2013 命令提示,输入(不含<)
> ildasm
ildasm是一款图形化的实用工具,可以查看更多程序集元数据信息。
发布项目输出到GAC
需要四个步骤:起名、签名、重新生成和安装到gac。
1、创建强名
打开2013命令提示,输入(不含<)
> sn –k mykey.snk
2、给程序集签名
[解决方案资源管理器]/{项目N}>>{属性}/{签名}/{为程序集签名}=勾选
[解决方案资源管理器]/{项目N}>>{属性}/{签名}/{选择强名称密钥文件}=<浏览…>,呼出[创建强名称密钥]窗口
导航到上一步生成的mykey.snk。
3、设置到位以后,重新生成,就得到了共享程序集
4、将共享程序集安装到GAC(需要管理员权限的命令提示,可能需要从开始菜单里面,以管理员权限启动)
打开VS2013命令提示,输入(不含<)
> gacutil /i mywork.dll
向项目增加程序集
1、静态地添加对程序集的引用。使用
[解决方案资源管理器]/{项目N}/{引用}>>,
2、通过编程的方法向应用程序中动态地添加程序集。具体请查阅相关的MSDN内容。
卸载程序集
不能直接从应用程序中卸载程序集。要卸载程序集而又保持应用程序的运行,需要通过编写代码的方法,并使用应用程序域的概念。
NuGet程序包管理器
使用NuGet程序包管理器、对象浏览器和MSDN文档,可以帮助用户找到能够满足要求的程序集。
NuGet主要是汇集了社区的资源,让开发者不必重复造轮子。
总结:
程序集概念通常属于比较容易引起混乱的基础知识。本文尝试从实际操作的角度粗略地过一遍。
这是llorch的Visual Studio基本教程博客的最后一篇。系列博客的主要目的是整理Visual Studio使用的问题。因为Visual Studio本身使用范围确实很广,尤其是它的代码智能提示和对象浏览器,非常强大。而Visual Studio的操作使用,在课堂甚至是论坛里是不讲的。这就是博客的写作动机。
Visual Studio是一款难得优秀的编程IDE。虽然随着时间演变,它支持的编程语言生态变得封闭、落后。但是对于广大编程爱好者、学生和一些专业开发者来说,它仍然是赖以GTD的工具。
llorch的系列博客信息量比较大。基本上一篇博客对应半天的实际操作。最好的方式是边操作边阅读。在整个系列博客的尾声,llorch想传达的观念是,IDE是保证代码的工具。编程工作的中心,是作为产品输出的代码。使用工具的根本目的,就是要协助劳动者集中于此。
非常感谢热心网友给出的反馈。
由于作者的水平和经验有限,错误疏漏之处再所难免。恳请各位读者朋友指正。请电邮至cqwd2010&qq.com(&为@)。
版权声明:本文为博主原创文章,未经博主允许(mailto:cqwd2010@qq.com)不得转载。