无法加载文件或程序集'Microsoft.WindowsAzure.ServiceRuntime,版本= 2.0.0.0

19

我们正在使用Azure SDK 1.8,本地运行良好。我们正在使用TFS托管的构建控制器来部署到Azure。

虽然我们没有更改Azure SDK dll版本,但今天突然出现了这个错误。这是因为TFS构建控制器升级了新的SDK吗?奇怪的是,每次构建都显示成功。

在TFS构建服务中,我发现了这个奇怪的东西,为什么它引用v2.0 sdk。 enter image description here

Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

如果你再次遇到这样的情况,我强烈建议启用远程桌面功能,并在本地进行调试。虽然有些麻烦,但你可以使用开发应用程序、事件查看器和 Web 配置进行调试,以便调整绑定并确保版本匹配。 - Phil Cooper
5个回答

22

如果其他所有方法都失败了,并且正确的 DLL 已部署到 bin 文件夹中,请尝试在 web.config 中添加一个程序集绑定重定向:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="2.0.0.0" newVersion="1.8.0.0" />
</dependentAssembly>

根据需要更改绑定版本号。


太好了,它能正常工作。但我不明白发生了什么事,为什么需要这样做。 - SOF User
很高兴能帮上忙。我浪费了半天的时间来尝试解决它。我没有更多的运行时错误,但(控制台应用程序)自动缩放器仍然无法自动缩放。我猜在这种情况下是 Nuget 的问题。 - Dragos Durlut
1
有这些错误时,检查项目中使用的NuGet包是很好的。例如,如果有人将某个与Azure相关的NuGet包更新到较新版本,则可能包含对2.0.0版本程序集的引用。 - Juha Palomäki
1
刚刚在生产Azure环境中使用了这个代码片段来解决一个突然出现的问题。将0.0.0.0-2.3.0.0重定向到2.3.0.0。 - Matthew Sharpe

7

因为我将引用从2.0更新到了2.2,但我的web config文件中仍然有2.0版本的dll被引用,所以发生了这种情况:

<system.diagnostics>
<trace autoflush="true">
  <listeners>
    <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
      <filter type="" />
    </add>
  </listeners>
</trace>


是的,我们需要查看Microsoft.WindowsAzure.Diagnostics,即使我们收到的错误是关于Microsoft.WindowsAzure.ServiceRuntime的抱怨。 最初我认为一些事情被引用不正确,因为两者不同,但当我遇到这个错误并发现没有错误时,上述问题确实引起了我的注意。 对于我来说,Microsoft.WindowsAzure.ServiceRuntime是2.3.0.0,其dll也是2.3.00,但是对于Microsoft.WindowsAzure.Diagnostics而言,它指向2.2.0.0,但其程序集版本是2.3.0.0。 - AKS

3

当我升级到2.3.0.0版本时,出现了这种情况。

要修复它,我进入引用 -> 右键单击dll文件 -> 单击属性 -> 将复制本地设置为true。


1
我们升级到使用 Azure SDK 2.3,并发现网站在本地工作时不需要引用 Microsoft.WindowsAzure.ServiceRuntime。但是,当网站发布到 Azure 时,它们要求此 dll。按照早期版本的说明,从 2.3 sdk 中添加并选中“复制本地”选项,重新发布即可将此 dll 复制过去。问题解决了。 - Steven Chalk

1
我相信我遇到了和你一模一样的问题(如果我没记错的话)。1.8 SDK包含对旧版StorageClient dll的引用。请尝试在您的项目中添加一个引用:
Microsoft.WindowsAzure.StorageClient version 1.7.0.0 

让我知道这是否有帮助!


谢谢您的回复。我刚刚编辑了一个问题,并附上了一张图片,请看看我是否走在正确的道路上。 - SOF User
我刚刚启用了融合日志,有人能帮我找到实际问题吗?错误信息显示在这里:http://concerthall.simpletix.eu/。 - SOF User

-1
我最近也遇到了这个问题。 根据我的研究,这可能是由多种原因引起的。 解决这个问题的最好方法是首先进行诊断。为了获得更好的诊断结果,请从异常窗口启用所有CLR异常。现在,您的Visual Studio将在抛出任何类型的异常时中断。从这里,您应该能够看到异常的内部详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接