无法加载文件或程序集'newtonsoft.json'

时间:2015-11-11 10:11:15

标签: c# wpf json.net visual-studio-2015

使用wpf创建桌面应用程序。 am installd newtonsoft.json(使用包管理器)进行json解析。在成功构建并运行我的应用程序之后。

然后iam从项目源>复制appliction.exe。 bin>调试到我的Destop。然后我尝试从桌面运行exe,但我收到一条错误消息

像这样

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

问题是什么?

1 个答案:

答案 0 :(得分:1)

exe运行时需要能够链接到dll。这就是为什么它在你的调试文件夹中工作(如果你看的话,newtonsoft dll就在那里),而它可能不在你的桌面上。

你可以:

1)确保exe中包含dll(例如,将其复制到桌面)。如果您在一个zip文件中分发exe,只需包含该DLL。如果您使用安装程序,请确保它还将dll安装到同一文件夹中。

OR

2)ILMerge将DLL直接存入你的exe - 这意味着exe包含整个DLL并且总是能够找到它。 NuGet包可以自动为您执行此操作。尝试通过NuGet添加“MSBuild.ILMerge.Task”,然后再次构建项目。

(还有其他解决方案,但它们通常都很糟糕,比如PATH,所以我不打算解释它们是如何工作的。)

就个人而言,我通常会推荐前者 - 只需包含DLL。查看PC上有软件的文件夹(例如Program Files中的大多数文件夹) - 你会看到它通常是如何完成的,DLL作为单独的文件安装。如果你不知道自己在做什么,那么ILMerge就会变得混乱,你开始用你的DLL做一些奇怪的事情。