无法加载文件或程序集'msshrtmi,版本= 2.7.0.0-安装什么SDK?

时间:2019-01-10 00:33:42

标签: asp.net .net azure azure-web-sites

我正在尝试运行使用某些Azure SDK(和存储)api的web应用程序,但是当我尝试运行它时,总是会出现此运行时错误。

我在装有Visual Studio的Windows 7盒子上安装了该项目,并安装了一堆SDK,该项目可以运行,但是在这台新Win10机器上,我正在启动它无法正常工作。

msshrtmi.dll存在于C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\runtimes\base\x86上的新计算机上(以及x64和runtimes \ net45 \ base中),但在旧计算机上也存在 c:\windows\Microsoft.net\assembly\GAC_XX\msshrtmi,我可以看到它是从IIS加载的。

如果我手动将msshrtmi.dll复制到我的bin文件夹中,则该项目可以正常运行。我也知道此文件是Microsoft.WindowsAzure.ServiceRuntime格式所必需的。

在这台新机器上,我试图避免安装Visual Studio,而仅使用Jetbrains Rider来构建和运行项目。它可以很好地构建项目,但是由于这个原因它现在无法运行。

该文件真的需要在我的Windows \ microsoft.NET文件夹中吗?什么安装程序将其放在那里?还是应该将msshrtmi.dll作为对我项目的依赖项?

有其他解决方案吗?

对于这个类似的问题,我没有碰运气就尝试了很多其他答案。

编辑:在ISS Express 8和10上尝试过

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决此问题:

1。手动将msshrtmi.dll复制到您的项目中。例如,在\bin旁边的WindowsAzure.Storage.dll文件夹中。

2。在服务器上安装Windows Azure SDK。

3。从app.config更改一些配置。

 <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="false" />
  </runtime>

有关更多详细信息,您可以参考此article和此one