我们已经编写了一个要部署到Azure的服务。这包含一个带有“Worker Role”类的DLL和一个Azure Cloud Service项目,如下所示:
构建步骤是:
这一直运行良好,直到我们升级到.NET 4.6.2并升级了其他几个引用,包括System.Runtime(现在的v4.3.1)。现在,尽管事实上我们(可能不必要地)在解决方案中为每个项目添加了一个NuGet引用,指向System.Runtime 4.3.1,获得的System.Runtime.dll版本部署是旧版本,导致服务上的DLL地狱,然后无法运行。如果我们手动复制正确版本的System.Runtime.dll,那么一切都会再次运行。
这个不正确的System.Runtime版本来自哪里?我们如何说服有问题的软件/硬件使用正确的版本?
更新:小道越来越暖和了。在我的开发计算机上,EventWorker项目的bin
文件夹包含正确版本的System.Runtime.dll。但是...... EventProcessor\obj\debug\EventWorker
文件夹包含旧版本!我删除了obj
文件夹并重新编译了该项目 - 旧版本的DLL再次出现。
它来自哪里,以及如何解决?
答案 0 :(得分:0)
在搜索有问题的DLL方面,你有正确的想法。你有任何可能使用错误版本的依赖DLL吗?此外,当在本地运行时,它会在错误窗口中显示dll冲突警告,允许您识别位置?查看您的配置文件,看看您是否在重定向部分中引用了DLL版本,更新它或创建一个新版本以指向最新版本。
答案 1 :(得分:0)
嗯,我修好了,但我不确定为什么会这样。我从System.Runtime
项目中移除了对EventWorker
的NuGet引用。现在EventProcessorRole
正在使用DLL的正确版本。
我会在此期间将此标记为答案,但如果有人可以提供此行为的解释,我会给你答复信用......