我们使用visual studio 2013开发了2个不同的应用程序: C#.net mvc5中前端的第一个 第二个是C#.net WebApi 2中的Web服务
两个应用程序都使用newtonsoft.json nuget但版本不同(前端为6.0.8,Web api为8.0.2)。
我们使用本地IIS进行测试和调试。 在IIS中,我们创建了2个网站和2个独立的应用程序池。
如果我在前端后编译Web服务,一切都很好。 如果我在Web服务之后编译前端,那么Web服务会崩溃,并且会有6.0.8版本的newtonsoft.json! 为什么?
应用程序池共享了一些dll?
我在项目中找到了一些带有“特定版本”选项的文章。如果“特定版本”为true,则两个版本都可以并行运行。但我不想这样做。
我还可以更新nuget以在两个项目中使用相同的版本,但这是一种解决方法,问题可能仍然存在于另一个dll。
我需要了解为什么2个应用程序池共享dll(带有différents版本)... 所以你有一个想法:-)?
由于 Whiletrue
答案 0 :(得分:0)
根据您的评论 - 原因很简单。你的webapi和mvc项目都依赖于classlib,这取决于newtonsoft特定的版本。因此,当您构建任何webapi或mvc项目时,classlib的依赖项也会添加到webapi或mvc项目中。您可以以某种方式破坏依赖关系或明确指定Web配置+项目文件中的版本,并在Bin文件夹中包含这两个版本。