国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 钟山县| 大庆市| 镇江市| 昔阳县| 巩留县| 九龙县| 平邑县| 武强县| 仁布县| 冕宁县| 大姚县| 封开县| 平顶山市| 河北省| 宁武县| 五指山市| 黄冈市| 望谟县| 鄯善县| 竹北市| 乡城县| 芮城县| 新沂市| 那曲县| 泾川县| 集贤县| 五莲县| 板桥市| 呼玛县| 东台市| 贵南县| 娱乐| 西城区| 慈利县| 永年县| 宁南县| 兖州市| 漠河县| 牡丹江市| 武宁县| 怀宁县|