快捷搜索:

CLR via C# 3 读书笔记(15):第2章 生成、打包、部

说话文化

和版本号一样,法度榜样集还将说话文化作为其标识的一部分。例如,我可能有一个专门用于德语的法度榜样集,一个用于瑞士德语的法度榜样集和一个用于美国英语的法度榜样集。说话文化经由过程一个包孕主标记和次标记的字符串来标识。

一样平常来说,假如创建的是包孕代码的法度榜样集,就没有需要指定说话文化。这是由于代码代码平日不包孕任何特定的说话文化。没有指定说话文化的法度榜样集是culture neutral的。

假如你设计的利用法度榜样包孕特定的说话文化资本,微软强烈建议你创建包孕代码和利用法度榜样默认(或后备)资本的法度榜样集。在天生法度榜样集时,不用指定说话文化。该法度榜样集将被其他法度榜样集引用,来创建和操作类型。

现在,你可以创建一个或多个只包孕特定说话的零丁的法度榜样集——不包孕任何代码。应用说话文化标记的法度榜样集称为卫星法度榜样集(satellite assembly)。它们指定了能够精确反应此中资本的说话文化。应该为支持的所有说话文化创建卫星法度榜样集。

平日应用AL.exe创建卫星法度榜样集,而不必应用编译器,由于卫星法度榜样集中不应该包孕代码。在应用AL.exe时,应用 /c[ulture]:text开关来指定所需的说话文化,text为字符串,如en_US代表美国英语。在支配卫星法度榜样集时,要将其放置在与说话文化的 text切合的子目录中。例如,假如利用法度榜样根目录为C:\MyApp,美国英语的卫星法度榜样集应该在C:\MyApp\en-US子目录中。在运行时,应用System.Resources.ResourceManager类造访卫星法度榜样集的资本。

留意,创建包孕代码的卫星法度榜样集是可能的,只管并不提倡这么做。假如你乐意,可以应用System.Reflection.AssemblyCultureAttribute自定义特点来指定说话文化。例如:

// Set assembly's culture to Swiss German

[assembly: AssemblyCulture("de-CH")]

平日环境下,不应该创建引用卫星法度榜样集的法度榜样集。换句话说,一个法度榜样集的AssemblyRef条款指向的应该都是说话文化中性(culture-neotral)的法度榜样集。假如要造访包孕在卫星法度榜样集中的类型或成员,你应该应用反射技巧。

简单利用法度榜样支配(私有支配法度榜样集)

本章先容了若何创建模块以及若何将模块组合为法度榜样集。本节先容若何打包和支配法度榜样集以使利用法度榜样能够运行。

法度榜样集并没有规定或要求特殊的打包要领。最简单的打包要领是直接拷贝所有的文件。例如,你可以将所有法度榜样集文件放到光盘里,连同一个批处置惩罚文件安装法度榜样一路宣布给用户,该批处置惩罚文件唆使将CD中的文件拷贝到用户硬盘中的某个目录里。因为法度榜样集包孕所有依附的法度榜样集引用和类型,用户可以运行利用法度榜样并在运行时查找利用法度榜样目录中被引用的法度榜样集。无需变动注册表。卸载法度榜样只必要删除所有文件即可。

当然,也可以应用其他机制来打包和安装法度榜样集,如.cab文件(范例地用于互联网下载的场景,用来压缩文件以缩短下载光阴)。还可以应用 Windows Installer办事(MSIExec.exe)将法度榜样集文件打包为MSI文件。应用MSI文件容许法度榜样集在第一次加载时才被安装。这并不是MSI的新特点,它同样可以用于非托管的EXE和DLL。

留意,应用批处置惩罚文件或其他“安装软件”可以将利用法度榜样安装到用户的谋略机内。然则要想在用户桌面或开始菜单中创建快捷要领,就必要更高档的安装软件了。同样,规复和备份利用法度榜样或者将其迁移到另一台谋略机都是很简单的事,然则不合的快捷要领都必要特殊处置惩罚。

当然,在Visual Studio中的项目属性页的Publish选项卡中,内嵌了一个宣布利用法度榜样的功能。应用Publish选项卡中的选项可以让Visual Studio天生MSI文件并将其拷贝到Web站点、FTP办事器或文件路径。MSI文件还会安装所有的必备组件,如.NET Framework、Microsoft SQL Server 2008 Express Edition。终极,利用法度榜样经由过程ClickOnce技巧自动反省更新并安装到用户谋略机。

支配在同一目录中的法度榜样集称为私有支配法度榜样集(privately deployed assembly),由于这些法度榜样集文件不能被其他利用法度榜样共享(除非其他利用法度榜样也支配在同一个目录中)。私有支配法度榜样集可以被轻松地拷贝到法度榜样的根目录中,CLR将加载并履行此中的代码,这为开拓职员、终极用户和治理员都供给了极大年夜的便利。别的,利用法度榜样的卸载只必要删除目录中的法度榜样集。这也同样简化了规复和备份。

因为每个法度榜样集中元数据来指明要加载哪些被引用的法度榜样集,这使得这种简单的安装、移动、卸载(不必变动注册表)变为可能。此外,利用的法度榜样集还准确地界定了每一个类型。这意味着利用法度榜样老是保定道它天生和测试的类型中。CLR不会加载仅仅供给了一个同名类型的其他法度榜样集。这与COM不合,COM中的类型被记录在注册表中,这使得他们可用于同一台机械中运行的任何法度榜样。

您可能还会对下面的文章感兴趣: