在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
概念1.配置系统是分层的,最高层的是machine.config,位于\%windows%\Microsoft.Net\Framework\VersionNumber\CONFIG目录下,此目录还有一个机器范围的全局web.config,每个web应用程序中的每个目录和子目录最多只能有一个web.config文件。如果web.config文件中包含的配置信息与更高层次的配置发生冲突的话,那么低层配置将覆盖并应用于自身目录及其所有子目录下。
此图下面的edit global configuration 便是修改机器级别的全局web.config,edit configuration 则是修改每个应用程序的web.config。
概念2.任何程序集(assembly)使用的时候都需要添加引用(reference),无一例外,包括System命名空间。
可是为什么我们不用手动添加System命名空间,如果当你打开\%windows%\Microsoft.Net\Framework\VersionNumber\CONFIG目录下机器范围的web.config文件便能找到如下配置节点
<assemblies>
<add assembly="mscorlib"/> <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add assembly="*"/> <add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <add assembly="System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/> <add assembly="System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/> <add assembly="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> </assemblies>
这就是为什么我们一般不需要在自己单独的应用程序的web.config中再添加System的引用了(当然愿意自己再写一遍,也不会有啥问题)。 当你要添加外部的程序集时,你会在bin目录右键然后选择添加引用,那么bin目录便会得到一份copy的dll文件,可是如果是有的.net的程序集,却不会得到copy而是在<assemblies>下多了一个add的 概念3. 程序集的分类() CLR将程序集分为私有程序集和GAC GAC=Global Assembly Cache,即全局程序集缓存或者叫做共享程序集缓存,注册到GAC中的程序集一般都可以在\windows\assembly目录中找到,里面可以看到 程序集的名字、版本号、culture、公钥(publicTokenKey),如果你要引用的话,有2中方法 1.手动web.config中的assemblies节点添加一个add 2.bin目录下添加引用找到相应的程序集(会自动做第一步)
我们自己的外部的程序集需要引用的时候用方法1会失效,因为我们自己的程序集是私有的,没有注册到GAC中,你加个add系统怎么知道去哪找你的程序集,所以右键bin目录添加引用的适合,bin目录会得到一份dll的copy。
问题1.为什么GAC的目录是\windows\assembly? 答:此路径是可以更改,可配置的 问题2.CLR搜索程序集顺序 答:先GAC然后搜索应用程序集缓存(如bin目录,app_code目录)
|
请发表评论