找不到方法:Microsoft.WindowsAzure.ServiceModel.Service.set_IsSLBPartialGS(Microsoft.WindowsAzure.ServiceModel.Expression)

Sos*_*der 10 c# azure azure-storage

一段时间以来,在尝试使用Azure模拟器启动任何类型的应用程序时,我都遇到以下错误:

Microsoft Azure Tools: Method not found: 'Void Microsoft.WindowsAzure.ServiceModel.Service.set_IsSLBPartialGS(Microsoft.WindowsAzure.ServiceModel.Expression)'.
Run Code Online (Sandbox Code Playgroud)

重新启动计算机通常可以解决一段时间,但是我每天都会遇到此问题,并且如果我一次看到此警告,则没有重新启动的方法就无法解决。

可悲的是,我也找不到很多文档(如果有)。

我正在使用Azure工具V2.9。

有没有人有解决方案,或者至少暗示这可能是什么?

小智 11

问题:

Azure SDK v2.9 附带的程序集版本不匹配。其中一个程序集缺少名为 IsSLBPartialGS 的属性的 setter。

使固定:

从“C:\Program Files\Microsoft SDKs\Azure\Emulator”复制 2 个程序集 Microsoft.WindowsAzure.ServiceModel.dll 和 Microsoft.WindowsAzure.ServiceModel.Comon.dll

到:“C:\Program Files\Microsoft SDKs\Azure\Emulator\devfabric”

请注意,此操作需要管理员权限。我建议在覆盖任何程序集之前进行备份。

我是如何找到修复的:

为了比较程序集及其内容,我编写了自己的反编译器和符号检查器。对比多个文件夹后,发现Emulator文件夹中的Microsoft.Windows.Azure.ServiceModel.dll有AssemblyFileVersion: 1.0.6696.103 (rd_sm.180206-1102)

而 DevFabric 文件夹中的版本是: 1.0.6696.47 (rd_sm.160421-1505)

请注意,两者AssemblyVersion是相同的(如 .NetReflector 中所示为 1.0.0.0),但是它们AssemblyFileVersions是不同的。从我的程序中进一步查看反编译代码的差异,我发现 DevFabric 中的程序集(这是一个稍旧的版本)缺少一些关键的类/方法/属性,包括以下内容: 请参阅代码差异图片


小智 5

我最近才遇到此问题,并且能够通过还原Azure Data Lake and Stream Analytics Tools到版本来解决此问题2.3.3000.2- 2.3.7000.2于19/3/25 的更新似乎已引入了该问题。

  • @ViktorZ哦,我知道了,但是接下来的步骤对我有用:1.关闭MSVS(我使用MSVS 2015)2.关闭模拟器3.打开IIS管理器并删除Web角色的站点4.再次启动MSVS,打开解决方案,开始调试,我使用Win 10并安装了MSVS 2019,可能与它有关... (4认同)
  • @ViacheslavIvanov - 这在我的情况下有效(MSVS 2019,没有 IIS,所以只执行了步骤 1,2,4) (2认同)