c# 的namespace以及assembly

1 NameSapce

1 1个namespace里面可以有多个类

2  namespace和cs文件是多对多的关系。

3  调用另一个namespace的声明,可以使用using <namespace> ,然后直接调用类名,或者使用namespace.类名来调用

4  namespace支持别名(alias)   using namespace = namespace.classname,如using mycar = consoleapplciation1.car;

5  namespace支持嵌套

 

 

2 Assembly

 

1   Assembly 两种类型,exe 或dll, 两种类型都可以被其他程序调用,得到内部的Class Type.

2   .net 的Assembly具有语言无关性,c#的程序可以调用或者继承vb.net编写的DLL/exe assembly中的type

3    C#中的type是由namespace.type决定的,如果两个assembly(dll/exe),中包含有相同的namespace.type,那么c#认为两者相同

4    Assembly有一个4位数的版本号 <major>.<minor>.<build>.<revision>

5    C#中的Assembly使用manifest文件以及自身来描述自身调用的其他Assembly,版本号以及内部包含的Type,Class等。

6    Assembly的组成部分: Win32的文件头/CLR文件头/CIL code /type metadata/manifest/resource文件

 

 

3  单文件和多文件Assembly

多文件Assembly一般包括资源文件(如bmp),.netModule文件(包括type metadata和CIL Code),这些文件由主dll的manifest文件中指定说明

 

4  Private Assembly

和application在同一个目录或者子目录下,如果在exe中指定了reference,则在第一次编译时,会将对应的dll拷贝到exe目录中,执行exe文件时,exe会从拷贝的dll中得到type.主要是c#中是不会通过注册表得到指定的dll.

Private Assembly的唯一标志为文件名+版本号

 

5  exe的configure文件 exe.config

1  如private assembly位于exe所在目录的子目录,则需要在config文件中指定目录名,如

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="MyLibraries"/>
</assemblyBinding>
</runtime>
</configuration>

如果是多个目录,则可以写为<probing privatePath="MyLibraries; MyLibraries/Tests"/>

 

6 Shared Assembly

同private的区别就是compile不会拷贝一个shared assembly的副本,和exe的对应关系是1对多,一般位于目录c:/windows/assembly。 Shared Assembly的唯一标志称为strong name.由public key和private key以及其他部分组成。

sn.exe程序可以帮助生产Public key和private key,public key被储藏在manifest中,而Private key和Assembly的hashcode会组合成一个digital签名,存放在assembly中

 

所以strong name = assembly name + public key + version number + culture identity(多语言使用,optional) + digital签名

 

 

7 Configure文件中关于shared assembly的设置

[assembly: AssemblyVersion("2.0.0.0")],

 

动态绑定assembly

1  如果程序想加载一个与manifest中指定版本不同的assembly,通过assemblyIdentity(名称)和 bindingRedirect(当前使用版本及新需要加载的版本)下例

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
514 CHAPTER 15 n INTRODUCING .NET ASSEMBLIES
<assemblyIdentity name="CarLibrary"
publicKeyToken="219ef380c9348a38"
culture="neutral"/>
<bindingRedirect oldVersion= "1.0.0.0"
newVersion= "2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

 

2 config文件中的<codeBase>

帮助exe在指定的location加载assembly

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name=" CarLibrary" publicKeyToken="219ef380c9348a38" />
<codeBase version="2.0.0.0" href="file:///C:/MyAsms/CarLibrary.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

 

3 config中的自定义tag

System.Configuration.AppSettingsReader支持读取config文件中的客户化配置

tag名为<AppSettings>, <add key。。>

 

4 机器级的config文件,版本不同,地址不同。文件名: machine.config

位于C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/CONFIG目录

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值