未能載入檔案或程式集「newtonsoft.json, version=4.5.0.0, culture=neutral, publickeytoken=30ad4fe6b2a6aeed」或它的某乙個依賴項。找到的程式集清單定義與程式集引用不匹配。 (異常來自 hresult:0x80131040)
為什麼我們在專案中引用的是 newtonsoft.json, version=6.0.0.0,但站點出錯,提示找不到 4.5.0.0的版本呢?我們根據提示查詢原因。
通過 regedit 命令開啟登錄檔,找到 hkey_local_machine => software =>microsoft =>fusion 修改或者新增 enablelog ,將值設定為 1.
修改登錄檔後,重新訪問站點,顯示出更多的錯誤資訊根據程式集載入跟蹤資訊可以看到,程式是先載入system.net.http.formatting, version=4.0.0.0 , formatting 載入 newtonsoft.json, version=4.5.0.0 ,結果就是找不到 newtonsoft.json, version=4.5.0.0 。 那我們再來看看 system.net.http.formatting 為什麼會載入 newtonsoft.json。我們反編譯 formatting, 察看他的 程式集清單。
我們引用了 4.0.0.0版本的 system.net.http.formatting,它搶先一步載入與之關聯的 json 4.5.0.0 版本。注:這裡原因只是根據日誌來進行分析的。比如:system.net.http 也引用了 json ,也可能造成該錯誤提示。
1、正確引用各版本dll.2、維護好 packages.config ,通過 packages.config 來控制dll版本的引用
3、在web.config 的 runtime 節點中強行指定 版本
xmlns="urn:schemas-microsoft-com:asm.v1">
name="newtonsoft.json"
publickeytoken="30ad4fe6b2a6aeed"
culture="neutral" />
oldversion="0.0.0.0-6.0.0.0"
newversion="6.0.0.0" />
dependentassembly>
assemblybinding>
runtime>
未能載入檔案或程式集
不要做a位 修改為b位 的無用功。也不要做用a位 直接呼叫b位 庫這樣複雜 這樣容易出錯的傻事。只需讓a位 b位 的輸入輸出重定向到文字檔案,或修改a位 b位 讓其通過文字檔案輸入輸出。即可很方便地讓a位 b位兩種 之間協調工作。關於.net編譯的目標平台 anycpu,x86,x64 今天將呼叫s...
c 未能載入檔案或程式集
dll檔名與載入時的dll檔名不一致,dll檔案根本不存在,即出現丟失情況,載入dll路徑錯誤,即dll檔案存在,但載入路徑不正確 程式集版本錯誤。我a.dll內部引用的b.dll是1.0版本,而實績提供的b.dll是2.0的版本,所以在winfrom設計介面就報了這個找不到依賴項的錯誤。主要原因是...
未能載入檔案或程式集 系統找不到指定檔案
前言 在網上折騰了很久,終於在一次次嘗試後,把win10 vs2013 cuda8.0平台搭建成功,在檢查cuda編譯器nvcc時,沒有發現問題,但在執行cuda samples裡的各個示例時,都會出現如下錯誤 error msb4062 未能從程式集c progarm file x86 msbul...