Azure网站在TFS上构建和部署时缺少msshrtmi

时间:2012-06-27 09:34:35

标签: tfs azure azure-deployment

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

  

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

我已经尝试了以下主题中提出的所有解决方案,但没有运气。我认为它与TFS有关。

我测试了这个:

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

Could not load file or assembly 'msshrtmi' or one of its dependencies (Azure Table Storage Access)

我已经没有关于如何解决此问题的想法?有没有人有任何建议?

3 个答案:

答案 0 :(得分:1)

在进行某些构建时,我在早期版本的SDK中遇到了类似的问题。我的解决方案并不完全直观。如果我仔细检查每个构建配置并执行“清理解决方案”,那么请回到我真正关心的构建配置并进行构建,此问题就会消失。

我没有解释为什么这样做有效,但是经过几个小时拉出我的头发,我很高兴有一个解决方案。

答案 1 :(得分:1)

经过7个小时的精打细算,我终于解决了这个问题。问题在于将2012年6月的Microsoft Windows Azure工具与2011年11月的Microsoft Windows Azure工具结合使用。

我遵循的步骤:

  • 删除Microsoft Windows Azure工具对于Visual Studio 2012 RC - 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小时内编码。

答案 2 :(得分:0)

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