9

我正在尝试从 TFS(预览版)部署到 Azure 网站(预览版)。构建工作并部署了网站,但是当我的代码尝试访问 Azure RoleEnvironment 时,网站会引发以下异常:

无法加载文件或程序集 'msshrtmi, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件。

我已经尝试了以下线程中提出的所有解决方案,但没有成功。我认为这与TFS有关。

我已经对此进行了测试:

  • 重新安装 Azure SDK 和工具
  • 从项目文件中删除所有 PlatformTarget
  • 编写构建后事件以删除 msshrtmi.dll
  • 将所有程序集定位到 x64(-> TFS 上的所有单元测试失败,它似乎是 x86,即使在 .testsettings 中允许 x64)

无法加载文件或程序集“msshrtmi”或其依赖项之一(Azure 表存储访问)

我对如何解决此问题没有任何想法?有没有人有什么建议?

4

3 回答 3

1

在进行一些构建时,我在早期版本的 SDK 中遇到了类似的问题。我的解决方案并不完全直观。如果我检查每个构建配置并执行“清洁解决方案”,然后返回到我真正关心的构建配置并进行构建,这个问题就会消失。

我无法解释为什么会这样,但是几个小时后我的头发被拉出来,我很高兴有一个解决方案。

于 2012-06-27T21:19:04.133 回答
1

经过 7 小时的令人难以置信的反复试验,我终于解决了这个问题。问题在于 2012 年 6 月的 Microsoft Windows Azure 工具和 2011 年 11 月的 Microsoft Windows Azure 工具。

我遵循的步骤:

  • 删除适用于 Visual Studio 2012 RC 的 Microsoft Windows Azure 工具 - 2012 年 6 月
  • 为 Visual Studio 2010 安装 Microsoft Windows Azure 工具 - 2012 年 6 月版
  • 删除适用于 Visual Studio 2010 的 Microsoft Windows Azure 工具 - 2011 年 11 月版
  • 现在重新打开试图部署的项目
  • Visual Studio 将尝试将所有 2011 年 11 月的二进制文件转换为 2012 年 6 月的版本
  • 成功完成后,重新检查所有 Microsoft.WindowsAzure 引用以查看它们是否为 1.7.0.0 版
  • 发布到 Azure!

希望它对某人有所帮助,我太累了,我在接下来的 24 小时内不会编码。

于 2012-06-28T18:02:31.927 回答
0

我遇到了同样的问题,它总是在 64 位应用程序中寻找 32 位版本的 msshrtmi,导致这样的错误。我从来不知道为什么,但我在我的项目中创建了构建任务,该任务将从 bin 中删除有问题的 32 位文件,因此在 GAC 中找到了 64 位。

于 2012-06-28T01:19:21.523 回答