有几个答案(例如this和this)和a blog post指出如何在部署Azure云服务时安装Visual C ++ 2010可再发行组件包。
首先,将vcredist_x64.exe添加到Web项目并设置其"复制到输出目录"财产到"复制如果更新"或"始终复制"。然后对包含单行的命令文件(在我的情况下为#34; InstallVC.cmd")执行相同的操作:
vcredist_x64.exe /q /norestart
然后编辑ServiceDefinition.csdef文件以包含设置
<Startup>
<Task commandLine="InstallVC.cmd" executionContext="elevated" taskType="simple" />
</Startup>
在角色内。答案和博客文章继续指出,如果ServiceConfiguration.csfg上的osFamily设置设置为osFamily =&#34; 1&#34;则启动任务将挂起。并且它需要设置为osFamily =&#34; 2&#34;。
我的设置为osFamily =&#34; 4&#34;,但部署失败。我收到错误消息Role has encountered an error and has stopped. Application startup task failed with exit code 5100
。
如何使用最新的Azure OS系列安装Visual C ++ 2010可再发行组件包作为Azure云服务部署的一部分?
答案 0 :(得分:0)
它失败了,因为Azure云服务映像已经安装了Visual C ++可再发行组件包的更新版本,因此我不需要安装另一个。让我误以为我确实需要它的是我使用的DLL无法加载其依赖项(如Dependency Walker所示的截图所示)。但是找不到依赖项的失败并不是因为缺少Visual C ++可再发行组件包,而是因为我引用了调试版本(例如MSVCP120D.DLL
而不是MSVCP120.DLL
)。交换为'release'为我修复了缺少的依赖项问题,无需任何Azure部署启动任务。