国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#程序集系列12,C#編譯器和CLR如何找尋程序集

2019-11-14 16:26:54
字體:
來源:轉載
供稿:網友

本篇體驗C#編譯器和CLR運行時如何查找程序集,并自定義CLR運行時查找程序集的方式。

 

□ C#編譯器和CLR運行時如何查找程序集

C#編譯器在哪里?
--在C:/Windows/Microsoft.NET/Framework/v4.0.30319中
83

→刪除F盤as文件夾中所有的exe和dll文件
→把上一篇全局程序集緩存文件夾(C:/Windows/Microsoft.NET/assembly/GAC_MSIL/Farm/v4.0_3.3.3.3__863de8402b3a9978)中的Farm.dll剪切拷貝到C:/Windows/Microsoft.NET/Framework/v4.0.30319文件夾中,即把Farm.dll放到C#編譯器csc.exe所在文件夾
84
現在,Farm.dll既不再全局程序集緩存文件夾,也不在F盤as文件夾中,和csc.exe在同一個文件夾中。
→F盤的as文件夾中也沒有Farm.dll
85
→重新編譯MainClass.cs
86
→但是,運行MainClass.exe,卻報錯
87

這說明:以上編譯成功,意味著C#編譯器能找到其所在文件夾內的Farm.dll程序集;但,CLR運行時卻"不認識"這個Farm.dll程序集。
因為,CLR運行時會到MainClass.exe所在的文件夾中去搜索Farm.dll,沒有搜尋到,所以報錯。
→現在把csc.exe所在文件夾的Farm.dll拷貝到F盤的as文件夾中
→再次運行MainClass.exe
88
這印證了:CLR運行時會在可執行文件所在文件夾搜尋程序集。


所以,

C#編譯器查找程序集的順序是:
1、在C#編譯器所在文件夾中查找
2、在全局程序集緩存文件夾中查找(該文件夾中的程序集必須是強名稱)
3、在可執行文件所在文件夾查找

 

CLR運行時查找程序集的順序是:
1、在全局程序集緩存文件夾中查找(該文件夾中的程序集必須是強名稱)
2、在可執行文件所在文件夾查找

 

□ 自定義CLR運行時查找程序集的方式

→查看F盤as文件夾中的當前文件
89
→創建MyAssemblies文件夾
90

→把Farm.dll移動到新創建的MyAssemblies文件夾
91
→運行MainClass.exe,發現報錯
92
→在as文件夾中創建MainClass.exe.config文件
→用記事本打開,編寫如下,保存

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <PRobing privatePath="MyAssemblies" />
        </assemblyBinding>
    </runtime>
</configuration>

→再次運行MainClass.exe,一切正常
93

 


總結:
○ .NET搜尋程序集的時候是忽略后綴的,即Farm.dll和Farm.exe一樣能被找到
○ C#編譯器和CLR運行時,查找程序集的方式有所不同
○ 在"可執行文件名稱.exe.config"中設置CLR運行時查找程序集的方式

 

“C#程序集系列”包括:

  C#程序集系列01,用記事本編寫C#,IL代碼,用DOS命令編譯程序集,運行程序

  C#程序集系列02,使用記事本查看可執行程序集的IL代碼

  C#程序集系列03,引用多個module

  C#程序集系列04,在程序集包含多個module的場景下理解關鍵字internal

  C#程序集系列05,讓程序集包含多個module

  C#程序集系列06,程序集清單,EXE和DLL的區別

  C#程序集系列07,篡改程序集

  C#程序集系列08,設置程序集版本

  C#程序集系列09,程序集簽名

  C#程序集系列10,強名稱程序集

  C#程序集系列11,全局程序集緩存

  C#程序集系列12,C#編譯器和CLR如何找尋程序集

  C#程序集系列13,如何讓CLR選擇不同版本的程序集

 

參考資料:

http://www.computersciencevideos.org/  created by Jamie King


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌海市| 佛山市| 普安县| 灵石县| 沂水县| 普陀区| 金门县| 阳江市| 门源| 独山县| 商洛市| 炉霍县| 东源县| 独山县| 北京市| 五莲县| 万盛区| 手机| 兖州市| 互助| 故城县| 卫辉市| 微博| 荥阳市| 沙河市| 土默特右旗| 平邑县| 福清市| 稷山县| 伊金霍洛旗| 略阳县| 临海市| 习水县| 富平县| 云林县| 五家渠市| 北碚区| 仙居县| 英超| 抚松县| 富裕县|