更新时间:2022-05-19 23:29:03
问题在于云端缺少 Visual C++ 2010 运行时库.
The problem was that the Visual C++ 2010 Runtime libraries were missing from the cloud side.
我所做的是将 Visual C++ 2010 Redistributable 包添加到项目中,以及在启动时静默安装它的脚本,现在本机 dll 的工作.如果您使用本机 C dll,您也需要这个.
What I did was add the Visual C++ 2010 Redistributable package to the project, along with a script to silently install it at start up, and now the native dll's work. You also need this if you're using native C dll's.
步骤:
1) 下载 Visual C++ 2010 Redistributable Package,并将其添加到您的项目中.
1) Download Visual C++ 2010 Redistributable Package, and add it to your project.
2) 创建一个新的批处理文件并将其添加到其中:
vcredist_x64.exe/q/norestart
退出/b 0
2) Create a new batch file and add this to it:vcredist_x64.exe /q /norestart
exit /b 0
3) 打开 ServiceDefinition.csdef 文件并将其添加到相关的 WebRole 元素下:
3) Open the ServiceDefinition.csdef file and add this under the relevant WebRole element:
<Startup>
<Task commandLine="InstallVCRedist.bat" executionContext="elevated" taskType="simple" />
</Startup>
更新:
Visual C++ 2012 已经发布,同样的脚本也可以运行,尽管每个人都应该确保 Azure 至少运行 Windows Server 2008 R2,否则启动任务将挂起并且角色永远不会启动(直到您通过 RDP 杀死任务管理器中的 vcredist 进程).
UPDATE:
Visual C++ 2012 is out and the same script works, though everyone should make sure Azure is running atleast Windows Server 2008 R2, otherwise the start-up task will hang and the role will never start (until you kill the vcredist process in the task manager via RDP).