且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Windows Azure 找不到 C++/CLI 项目的 DLL

更新时间: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).