【问题标题】:Running vcredist_x64.exe as a startup task for an Azure cloud service, osFamily="4"运行 vcredist_x64.exe 作为 Azure 云服务的启动任务,osFamily="4"
【发布时间】:2015-01-30 00:48:42
【问题描述】:

有几个答案(例如thisthis)和a blog post 指出如何在部署 Azure 云服务时安装 Visual C++ 2010 可再发行包。

首先,您将 vcredist_x64.exe 添加到 Web 项目,并将其“复制到输出目录”属性设置为“如果较新则复制”或“始终复制”。然后对包含单行的命令文件(在我的情况下为“InstallVC.cmd”)执行相同操作:

vcredist_x64.exe /q /norestart

然后编辑 ServiceDefinition.csdef 文件以包含设置

<Startup>
  <Task commandLine="InstallVC.cmd" executionContext="elevated" taskType="simple" />
</Startup>

在角色内。答案和博客文章继续指出,如果将 ServiceConfiguration.csfg 上的 osFamily 设置设置为 osFamily="1" 并且需要将其设置为 osFamily="2",则启动任务将挂起.

我的设置为 osFamily="4",但部署失败。我收到错误消息Role has encountered an error and has stopped. Application startup task failed with exit code 5100

您如何安装 Visual C++ 2010 可再发行包,作为使用较新的 Azure 操作系统系列部署 Azure 云服务的一部分?

【问题讨论】:

    标签: azure azure-web-roles vcredist


    【解决方案1】:

    失败是因为 Azure 云服务映像已经安装了 Visual C++ 可再发行包的更新版本,因此我不需要安装另一个。让我误以为我确实需要它的是我使用的 DLL 无法加载它的依赖项(如下面的来自Dependency Walker 的屏幕截图所示)。但是找不到依赖项并不是因为缺少 Visual C++ 可再发行包,而是因为我引用了调试版本(例如 MSVCP120D.DLL 而不是 MSVCP120.DLL)。切换到“发布”为我解决了缺少依赖项的问题,无需任何 Azure 部署启动任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多