在我目前的架构中,我有以下项目组织......
一个名为" MyBaseProject"的类库。以及参考MyBaseClassLibrary的不同Web应用程序项目。
在MyBaseProject中我添加了第三方dll(Newtonsoft.Json)
现在所有的Web项目都抛出异常"无法加载文件或程序集Newtonsoft.Json或其中一个依赖项。"
我不想在我的所有网络项目中添加Newtonsoft.Json,我该怎么办?
答案 0 :(得分:1)
请参阅How the Runtime Locates Assemblies。
此处最明显的行为是您没有为项目设置输出目录,因此它们默认为自己的各个位置。因此,在MyBaseProject
引用和复制Newtonsoft.Json
时,您的其他项目仅复制MyBaseProject
。因此,与其他项目一起位于文件夹中的MyBaseProject.dll
不的副本为Newtonsoft.Json
,并且由于它不在GAC中,因此引用失败。< / p>
最简单的解决方案是将所有项目输出到同一目录。我个人喜欢$(SolutionDir)\bin\$(Configuration)\$(Platform)
。这将确保在构建MyBaseProject.dll
并执行其任何要求时,您的其他项目将能够通过同一文件夹获得这些要求而不会发生任何事故。