0

我正在将 Orchard 部署到 Azure 云服务 (webrole),而不对官方稳定版本进行任何代码更改。但是,当我导航到新部署的 Orchard 云服务 (webrole) 时,我看到一个带有Could not load file or assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

作为一种解决方法,如果我启用 Local Copy=True (即修改源),那么这个特定的 YSOD 会消失,但会被另一个替换为msshrtmi)。但更重要的是,我能够毫无问题地部署预先构建的下载 Orchard Azure(1.7,预先构建了相同的 GIT src 标签),所以我宁愿解决根本问题,也不愿陷入解决方法的兔子洞和漂移离官方消息更远。

我是如何遇到这个问题的:

  1. 从 GIT 下载源代码(http://orchard.codeplex.com/SourceControl/latest,我用过 commit 5e0c26f73cf5,)
  2. 运行ClickToBuildAzurePackage.cmd脚本
  3. 编辑buildazure\Stage\ServiceConfiguration.cscfg以放入连接字符串以指向真正的 Azure 存储帐户(与本地存储相比)。
  4. buildazure\Stage通过 windowsazure.com 门户将这两个文件部署到 Azure
  5. 导航到站点(例如:http: //OrchardTest.cloudapp.net
  6. 享受黄屏死机:(

我们的本地构建系统:

  • 视窗 8、x64
  • VS2012.3
  • Azure SDK 1.7、1.8、2.0

问题:

有人成功部署到 Azure 吗?任何想法如何解决这个问题?

4

1 回答 1

2

Azure 服务运行时永远不需要 CopyLocal True。它会自动包含在包中,由您的云服务项目(在本例中为 Orchard.Azure.CloudService)定义。实际上,如果 bin 包含的服务运行时版本与构建 Azure 包的版本不同,我可以想象 CopyLocal True 可能会导致问题。

Orchard Azure 使用 Azure 2.0 库。它表明您已安装 2.0 SDK,因为您可以编译 Orchard.Azure.CloudService 项目以制作包。云服务项目对于每个版本的 Azure 工具都有不同的项目指南,因此如果没有 v2.0 SDK,它将是一个未知的项目类型。但是,随着您的 Orchard 网站选择 ServiceRuntime v1.7,您的本地环境似乎有些问题,因为它仍然应该与 v2.0 相同。

打开 Orchard.Azure.sln 时,检查 Orchard.Azure.Web 项目中 Microsoft.WindowsAzure.ServiceRuntime 引用上的属性。Visual Studio 在该参考上列出的版本是什么?它应该是 2.0.0。如果没有,我最好的建议是重新安装 2.0 库。

您定义的部署步骤在没有 YSOD 的情况下工作得很好。在写这篇文章之前,我成功地尝试了它;它没有重现您的问题。

于 2013-08-15T16:24:05.943 回答