IIS 本地、2 个网站、2 个应用程序池和 "shared" dll 问题

IIS local, 2 websites, 2 application pool and "shared" dll problems

我们在 visual studio 2013 年开发了 2 个不同的应用程序: C# .net mvc5 前端的第一个 第二个用于 C# .net WebApi 2 中的 Web 服务

两个应用程序都使用 newtonsoft.json nuget 但版本不同(6.0.8 for front 和 8.0.2 for web api)。

我们使用本地IIS 进行测试和调试。 在 IIS 中,我们创建了 2 个网站和 2 个独立的应用程序池。

如果我在前端之后编译 web 服务,一切都很好。 如果我在 Web 服务之后编译前端,Web 服务会随着 6.0.8 版本的 newtonsoft.json 崩溃! 为什么?

应用程序池共享一些 dll?

我在项目中找到了一些带有参考"Specific version"选项的文章。当 "specific version" 为真时,两个版本可以 运行 并行。但是我不想那样做。

我也可以将 nuget 更新为在两个项目中具有相同的版本,但这是一种解决方法,问题可能仍然存在于另一个 dll 中。

我需要了解为什么有 2 个应用程序池共享 dll(具有不同版本)... 那么你有什么想法吗:-)?

谢谢 而真实

根据您的评论 - 现在原因很简单。您的 webapi 和 mvc 项目都依赖于 classlib,它依赖于 newtonsoft 特定版本。因此,当您构建任何 webapi 或 mvc 项目时,classlib 的依赖项也会添加到 webapi 或 mvc 项目中。您可以以某种方式打破依赖关系,或者在 Web 配置 + 项目文件中明确指定版本,并将两个版本都放在您的 Bin 文件夹中。