我們的應用程式部署的時候,目錄結構一般不會只有執行程式的目錄這乙個,我們可能在執行目錄下建子目錄,也可能使用system32目錄,也可能使用其它第三方的程式集。.net程式集
首先會在gac中搜尋相應的版本,如果未找到則會應用程式配置檔案中找(如果配置),最後到應用程式所在的路徑搜尋。
<configuration
>
... ...
<
runtime
>
<
assemblybinding
xmlns
="urn:schemas-microsoft-com:asm.v1"
>
<
probing
privatepath
="plugins;libs"
/>
assemblybinding
>
runtime
>
configuration
>
當然我們也可以更詳細的配置,不過似乎一般這麼用的很少,這裡可以指定程式集名稱、公鑰、文化,版本重定向等等資訊
<configuration
>
<
runtime
>
<
assemblybinding
xmlns
="urn:schemas-microsoft-com:asm.v1"
>
<
dependentassembly
>
<
assemblyidentity
name
="myassembly"
publickeytoken
="32ab4ba45e0a69a1"
culture
="neutral"
/>
<
bindingredirect
oldversion
="1.0.0.0"
newversion
="2.0.0.0"
/>
<
codebase
version
="2.0.0.0"
href
=""/>
dependentassembly
>
assemblybinding
>
runtime
>
configuration
>
如何載入非執行目錄的程式集?也許有的人會想到反射,的確對應單獨的乙個程式集我們可以直接呼叫使用 assembly.loadfile(@"***.dll");載入,再使用反射對其中的方法屬性進行調
用,但是如果這個程式集同時引用了其它的,非應用程式執行目錄下的程式集,這時就會出錯,這個問題該如何解決呢?
在監聽的事件中遇到要載入額外的dll的時候,返回 assembly.loadfrom(strtempassmbpath)即可
assembly currentdomain_assemblyresolve(objectsender, resolveeventargs args)
return
string.isnullorwhitespace(strtempassmbpath) ? null
: assembly.loadfrom(strtempassmbpath);
}
C 如何引導程式執行目錄外的程式集
我們的應用程式部署的時候,目錄結構一般不會只有執行程式的目錄這乙個,我們可能在執行目錄下建子目錄,也可能使用system32目錄,也可能使用其它第三方的程式集。net程式集 首先會在gac中搜尋相應的版本,如果未找到則會應用程式配置檔案中找 如果配置 最後到應用程式所在的路徑搜尋。configura...
C 獲取程式執行目錄當前目錄
獲取程式的基目錄。獲取模組的完整路徑。system.diagnostics.process.getcurrentprocess mainmodule.filename 獲取和設定當前目錄 該程序從中啟動的目錄 的完全限定目錄。system.environment.currentdirectory 獲...
作業系統如何引導程式
1.使用者編寫完 後,通過編譯器將編譯為資料段 段 堆疊段 bss段,由鏈結器鏈結為裝入模組 2.使用者通知作業系統要執行的程式 3.作業系統根據路徑找到對應的程式,檢測程式的頭部,找到 段和資料段的位置 4.檔案系統根據這些段的位置找到對應的磁碟塊 5.作業系統建立程序 建立執行環境 並將要執行的...