在上层找不到基本项目 dll 引用

本文关键字:项目 dll 引用 找不到 | 更新日期: 2023-09-27 18:33:05

在我当前的架构中,我有以下项目组织...

一个名为"MyBaseProject"的类库和引用MyBaseClassLibrary的不同Web应用程序项目。

在MyBaseProject中,我添加了一个第三方dll(Newtonsoft.Json)。

现在,所有 Web 项目都会抛出异常"无法加载文件或程序集 Newtonsoft.Json 或其依赖项之一"。

不想在所有的Web项目中添加Newtonsoft.Json,我该怎么办?

在上层找不到基本项目 dll 引用

查看运行时如何定位程序集。

这里最明显的行为是你没有为项目设置输出目录,因此它们默认为自己的单个位置。因此,虽然MyBaseProject引用和复制Newtonsoft.Json,但您的其他项目仅复制MyBaseProject。因此,与其他项目一起位于文件夹中的MyBaseProject.dll没有Newtonsoft.Json的副本,并且由于它不在 GAC 中,因此引用失败。

最简单的解决方案是将所有项目输出到同一目录。我个人喜欢$(SolutionDir)'bin'$(Configuration)'$(Platform).这将确保在构建MyBaseProject.dll并承载其任何需求时,您的其他项目将能够通过同一文件夹获取这些需求而不会发生任何事件。