正在打包的System.Runtime版本错误

时间:2016-11-13 10:23:18

标签: c# azure nuget azure-cloud-services

我们已经编写了一个要部署到Azure的服务。这包含一个带有“Worker Role”类的DLL和一个Azure Cloud Service项目,如下所示: enter image description here

构建步骤是:

  1. 在“发布”配置中构建ccproj。
  2. 运行NuGet“spec”,然后“打包”以获取.nupkg文件
  3. 将.nupkg文件部署到Azure Cloud Service
  4. 这一直运行良好,直到我们升级到.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再次出现。

    它来自哪里,以及如何解决?

2 个答案:

答案 0 :(得分:0)

在搜索有问题的DLL方面,你有正确的想法。你有任何可能使用错误版本的依赖DLL吗?此外,当在本地运行时,它会在错误窗口中显示dll冲突警告,允许您识别位置?查看您的配置文件,看看您是否在重定向部分中引用了DLL版本,更新它或创建一个新版本以指向最新版本。

答案 1 :(得分:0)

嗯,我修好了,但我不确定为什么会这样。我System.Runtime项目中移除了EventWorker的NuGet引用。现在EventProcessorRole正在使用DLL的正确版本。

我会在此期间将此标记为答案,但如果有人可以提供此行为的解释,我会给你答复信用......