第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

.NET程序集的LoadFile和LoadFrom之間的區(qū)別?

.NET程序集的LoadFile和LoadFrom之間的區(qū)別?

慕妹3242003 2019-10-09 15:13:50
我一直在看msdn文檔,但是對(duì)于使用LoadFile和LoadFrom加載程序集之間的區(qū)別到底還是有些困惑。有人可以提供示例或類比來(lái)更好地描述它嗎?MSDN文檔使我更加困惑。此外,ReflectionOnlyLoadFrom與相同,LoadFrom只是它僅以反射模式加載裝配件。由于我的.NET經(jīng)驗(yàn)不是最好的,因此有一些有關(guān)使用LoadFile的MSDN文檔的問(wèn)題:1)LoadFile檢查具有相同標(biāo)識(shí)但位于不同路徑的程序集是什么意思?身份是什么(示例)?2)它聲明LoadFile不將文件加載到“ LoadFrom Context”中,并且不使用加載路徑解析依賴項(xiàng)。這是什么意思,有人可以提供例子嗎?3)最后,它指出LoadFile在這種有限的情況下很有用,因?yàn)長(zhǎng)oadFrom無(wú)法加載具有相同標(biāo)識(shí)但路徑不同的程序集;它只會(huì)加載第一個(gè)這樣的程序集,這又使我想到一個(gè)問(wèn)題,程序集的身份是什么?
查看完整描述

3 回答

?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

這樣可以清除嗎?


// path1 and path2 point to different copies of the same assembly on disk:


Assembly assembly1 = Assembly.LoadFrom(path1);

Assembly assembly2 = Assembly.LoadFrom(path2);


// These both point to the assembly from path1, so this is true

Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);


assembly1 = Assembly.LoadFile(path1);

assembly2 = Assembly.LoadFile(path2);


// These point to different assemblies now, so this is false

Console.WriteLine(assembly1.CodeBase == assembly2.CodeBase);

編輯:要回答您在修訂后的問(wèn)題中提出的問(wèn)題,您肯定想閱讀Suzanne Cook的Assembly Identity。


有很多規(guī)則控制程序集的加載方式,其中一些規(guī)則與如何解決依賴關(guān)系有關(guān)-如果您的AssemblyA依賴于AssemblyB,那么.NET在哪里可以找到AssemblyB?在全局程序集緩存中,它找到了AssemblyA所在的目錄,還是完全位于其他位置?此外,如果找到該程序集的多個(gè)副本,應(yīng)如何選擇要使用的那個(gè)副本?


LoadFrom有一套規(guī)則,而LoadFile有另一套規(guī)則。很難想象有很多使用原因LoadFile,但是如果您需要在同一程序集的不同副本上使用反射,那么反射就在那里。


查看完整回答
反對(duì) 回復(fù) 2019-10-09
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

來(lái)自Suzanne Cook的博客:


LoadFile與LoadFrom


小心-這些不是同一回事。


LoadFrom()通過(guò)Fusion,可以重定向到其他路徑下的另一個(gè)程序集,但如果已經(jīng)在LoadFrom上下文中加載了同一組件,則具有相同的標(biāo)識(shí)。


LoadFile()根本不通過(guò)Fusion進(jìn)行綁定-加載程序僅繼續(xù)進(jìn)行并完全加載*調(diào)用者請(qǐng)求的內(nèi)容。它不使用Load或LoadFrom上下文。


因此,LoadFrom()通常會(huì)為您提供所需的內(nèi)容,但不一定如此。LoadFile()適用于那些真的非常想要確切的請(qǐng)求的人。(*但是,從v2開(kāi)始,策略將同時(shí)應(yīng)用于LoadFrom()和LoadFile(),因此LoadFile()不一定完全符合要求。此外,從v2開(kāi)始,如果具有其標(biāo)識(shí)的程序集位于GAC,將改用GAC副本。請(qǐng)使用ReflectionOnlyLoadFrom()完全加載所需的內(nèi)容-但是請(qǐng)注意,無(wú)法執(zhí)行以這種方式加載的程序集。)


LoadFile()有一個(gè)陷阱。由于它不使用綁定上下文,因此不會(huì)在其目錄中自動(dòng)找到其依賴項(xiàng)。如果它們?cè)贚oad上下文中不可用,則必須訂閱AssemblyResolve事件才能綁定到它們。


查看完整回答
反對(duì) 回復(fù) 2019-10-09
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊

經(jīng)過(guò)反復(fù)的努力,今天下午我自己發(fā)現(xiàn)了一個(gè)不同之處。

我想在運(yùn)行時(shí)加載一個(gè)DLL,并且該DLL位于另一個(gè)目錄中。該DLL具有自己的依賴項(xiàng)(DLL),這些依賴項(xiàng)也位于同一目錄中。

LoadFile():加載特定的DLL,但不加載依賴項(xiàng)。因此,當(dāng)?shù)谝淮螐腄LL內(nèi)部調(diào)用到其他DLL中的一個(gè)時(shí),它引發(fā)了FileNotFoundException。

LoadFrom():加載我指定的DLL以及該目錄中存在的所有依賴項(xiàng)。


查看完整回答
反對(duì) 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 766 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)