在从TFS构建并部署时,Azure网站缺少msshrtmi。

12 浏览
0 Comments

在从TFS构建并部署时,Azure网站缺少msshrtmi。

我正在尝试从TFS(Preview)部署到Azure网站(Preview)。构建工作正常,并且网站已部署,但是当我的代码尝试访问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表存储访问)

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

0
0 Comments

问题出现的原因:早期版本的SDK在进行某些构建时会出现类似的问题。

解决方法:逐个检查每个构建配置,进行"Clean Solution"操作,然后回到实际关心的构建配置并进行构建,问题就会消失。

0
0 Comments

问题的原因是使用了不兼容的Microsoft Windows Azure工具版本。解决方法是按照以下步骤操作:

1. 删除Microsoft Windows Azure tools For Visual Studio 2012 RC - June 2012。

2. 安装Microsoft Windows Azure tools for Visual Studio 2010 - June 2012 Edition。

3. 删除Microsoft Windows Azure tools for Visual Studio 2010 - November 2011 Edition。

4. 重新打开需要部署的项目。

5. Visual Studio将尝试将所有的November 2011二进制文件转换为June 2012版本。

6. 确认所有的Microsoft.WindowsAzure引用版本是否为1.7.0.0。

7. 将项目发布到Azure。

希望这对其他有同样问题的人有所帮助。我已经累得无法再编码了,接下来的24小时内不会进行编码。

0
0 Comments

在构建和部署TFS时,Azure网站缺少msshrtmi的问题出现的原因是它总是寻找64位应用程序中32位版本的msshrtmi,导致出现以下错误。我从未找出原因,但我在项目中创建了一个构建任务,以删除bin中的有问题的32位文件,以便在全局程序集缓存(GAC)中找到64位文件。

解决方法如下:

# Delete the 32-bit version of msshrtmi from the bin
Remove-Item -Path "path_to_bin_folder\msshrtmi.dll" -Force

将上述代码添加到项目的构建任务中,替换"path_to_bin_folder"为实际的bin文件夹路径。这将删除32位版本的msshrtmi文件,从而确保64位版本能够在GAC中被找到。

0