問題描述
.NET6.0的項(xiàng)目使用netstandard2.0版本的動(dòng)態(tài)鏈接庫(kù)。若是在項(xiàng)目中直接添加引用,應(yīng)用netstandard2.0項(xiàng)目或者netstandard2.0編譯后的dll均能正常工作。但如果通過xcopy等方式,額外將對(duì)應(yīng)的dll復(fù)制到執(zhí)行目錄,會(huì)執(zhí)行失敗。調(diào)用方式一致,均為Assembly.Load(XXXDllName)。
錯(cuò)誤信息為:System.IO.FileNotFoundException: 'Could not load file or assembly 'XXXDllName, Culture=neutral, PublicKeyToken=null'. 系統(tǒng)找不到指定的文件。'
《How can I dynamically load .NET core library with .NET framework dependencies?》這個(gè)提問跟我的情況基本相同。
分析
- 通過項(xiàng)目添加dll引用直接生成到執(zhí)行目錄。(正常運(yùn)行)
- 通過編譯完成后復(fù)制dll到執(zhí)行目錄。(失?。?/li>
經(jīng)過比對(duì),以上兩種方式的生成目錄基本一致,只有ProjectName.deps.json
這個(gè)文件有細(xì)微差別。差別主要就是是否有XXXDllName.dll
文件的依賴信息。如果用第一種方式生成的*.deps.json
文件,覆蓋第二種方式的執(zhí)行目錄,是可以正常運(yùn)行的。所以這里導(dǎo)致錯(cuò)誤的原因就是*.deps.json
的內(nèi)容。這與我之前在.net framework上的使用經(jīng)驗(yàn)完全不一樣。如果想想動(dòng)態(tài)加載dll,這樣看,在.NET6.0版本上好像不是很方便。文章來源:http://www.zghlxwxcb.cn/news/detail-652030.html
待更新。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-652030.html
到了這里,關(guān)于[.NET學(xué)習(xí)筆記] -.NET6.0項(xiàng)目動(dòng)態(tài)加載netstandard2.0報(bào)錯(cuò)但項(xiàng)目添加引用則正常的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!