簡體   English   中英

無法加載文件或程序集“newtonsoft.json”

[英]could not load file or assembly 'newtonsoft.json'

我使用 wpf 創建一個桌面應用程序。 我安裝了 newtonsoft.json(使用包管理器)進行 json 解析。 在我成功構建並運行我的應用程序之后。

然后我將 appliction.exe 從項目源 > bin > debug 復制到我的 Destop。 然后我嘗試從桌面運行 exe,但我收到一條錯誤消息

像這樣

could not load file or assembly 'newtonsoft.json' ..... system cannot find the path

這是什么問題? 任何遺漏

exe 需要能夠在您運行時鏈接到 dll。 這就是它在您的調試文件夾中工作的原因(如果您查看,newtonsoft dll 在那里),而它可能不在您的桌面中。

您可以:

1) 確保 dll 包含在 exe 中(例如,將其復制到您的桌面)。 如果您在 zip 文件中分發 exe,只需包含 dll。 如果您使用安裝程序,請確保它也將 dll 安裝到同一文件夾中。

或者

2) ILMerge DLL 直接進入您的 exe - 這意味着 exe 包含整個 DLL 並且始終能夠找到它。 有 NuGet 包可以自動為您執行此操作。 嘗試通過 NuGet 添加“MSBuild.ILMerge.Task”,然后再次構建您的項目。

(還有其他解決方案,但它們通常很糟糕,比如 PATH,所以我不打算解釋它們是如何工作的)。

就個人而言,我通常會推薦前者 - 只包含 DLL。 查看 PC 上有軟件的文件夾(例如 Program Files 中的大多數文件夾)-您會看到通常是這樣完成的,DLL 作為單獨的文件安裝。 如果您不知道自己在做什么並且開始用 DLL 做奇怪的事情,ILMerge 會變得混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM