随笔分类 - Microsoft.Net框架程序设计学习笔记
Microsoft.Net框架程序设计学习笔记(6):算术运算溢出处理checked与unchecked操作
摘要:考虑以下代码:byte b = 100;b = (byte)(b+200); 这段代码在实际运行中是否会抛出溢出异常呢? 先不管答案,我们来看看CLR是如何应对溢出的: CLR提供的IL指令允许编译器选择自己期望的行为。CLR提供了一个名为add的指令,会直接对两个数做加法运算,而不做任何溢出检查。同时,CLR还提供了一个名为add.ovf的指令,它在对两数做加法运算时,一旦发出溢出,便会抛出一个System.OverflowException异常。除这两个加法运算指令外,CLR还提供了类似的减法(sub/sub.ovf)、乘法(mul/mul.ovf),以及数据转换(conv/conv.o.
阅读全文
Microsoft.Net框架程序设计学习笔记(5):延迟签名
摘要:延迟签名的作用: 当我们打包强命名程序时,必须使用安全的私有密钥来为之签名。然而在开发和测试程序集时,允许访问安全的私有密钥可能会导致私钥泄漏。为在开发与测试环境中保证私钥安全,.Net推出了延迟签名技术,也叫局部签名。延迟签名的步骤:开发程序集时,首先取得仅包含公司公有密钥的文件,并将以下两个特性加入到AssemblyInfo.cs文件中://指定公有密钥文件名[assembly:AssemblyKeyFile("MyCompany.Publickey")]//指定延迟签名特性为true[assembly:AssemblyDelaySign("true"
阅读全文
Microsoft.Net框架程序设计学习笔记(4):部署强命名程序集到全局程序集缓存(GAC)
摘要:如果一个程序集被多个应用程序所访问,为方便起见,应该将其放到一个CLR确知的目录下,这个目录即全局程序集缓存(GAC)。 全局程序集缓存所在路径一般为:c:\Windows\Assembly 向GAC中安装一个强命名程序集的常用工具为:GACUtil.exe 使用方法: 安装一个强命名程序集到GAC中 GACUtil /i xxx.dll 从GAC中删除一个强命名程序集 GACUtil /u xxx.dll GACUtil一般不会和客户应用程序一起发布,如果应用程序包括一些需要部署到GAC中的程序集,则必须的使用2.0版本以上的Windows安装器(MSI)。客户电脑上一般总是存在该工具。可.
阅读全文
Microsoft.Net框架程序设计学习笔记(3):强命名程序集的创建
摘要:强命名程序集的创建使用SN(Strong Name Utility)工具创建密钥例:SN -k MyCompany.keys创建一个名为MyCompany.keys的密钥文件,该文件包含一对以二进制格式存储的公有密钥和私有密钥。查看公有密钥方法创建一个只含有公有密钥的文件SN -p MyCompany.keys MyCompany.Publickey查看公有密钥SN -tp MyCompany.Publickey显示如下:Microsoft (R) .NET Framework 强名称实用工具 版本 2.0.50727.42Copyright (c) Microsoft Corporation
阅读全文
Microsoft.Net框架程序设计学习笔记(2):弱命名程序集与强命名程序集的区别
摘要:弱命名程序集与强命名程序集的区别:程序集部署:弱命名程序集只能进行私有部署,即只能部署在应用程序的基目录及子目录下;强命名程序集既可进行私有部署,也可进行全局部署。程序集定位:弱命名程序集可以在其清单元数据中嵌入版本号和语言文化特性,但CLR总会忽略版本号,仅利用程序集的名称进行定位,只有在搜寻子目录查找卫星程序集时才会使用其中的语言文化信息。强命名程序集包含4个唯一标识程序集的特性:文件名(不含扩展名)、版本号、语言文化标识、一个公有密钥标记(由公有密钥产生的一个值)。在定位时,唯有这4个特性完全匹配才能定位成功。
阅读全文
Microsoft.Net框架程序设计学习笔记(1):程序集文件的定位
摘要:当CLR要定位一个程序集时,它将扫描应用程序的几个子目录,下面是CLR扫描一个语言文化中性的程序集时的顺序: AppBase\AsmName.dll AppBase\AsmName\AsmName.dll 如果在上面的目录下没有找到该程序集,CLR将以.exe代替.dll扩展名来搜索。如果仍找不到,将抛出FileNotFoundException异常。 对于其他语言文化程序集(即卫星程序集)来说,除了期望被放在应用程序集目录下,且名字和语言文化相匹配的子目录外,其他规则仍适用。 以"en-US"为例,CLR将扫描以下目录: AppBase\en-US\AsmName.dll
阅读全文