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

Sha*_*han 2 c# cloud unmanaged c++-cli azure

我有一个包含非托管C压缩库的C++/CLI项目,该项目由调用C++ Compress函数的MVC3项目引用.

一切都在本地工作正常,但当我将解决方案发布到Azure云时,我得到一个错误,说它无法找到模块/ dll:

无法加载文件或程序集"LZGEncoder.DLL"或其依赖项之一.指定的模块无法找到.

为什么找不到DLL文件?是去了错误的地方还是正在编译?有什么方法可以检查吗?谢谢!

Sha*_*han 6

问题是云端缺少Visual C++ 2010 Runtime库.

我所做的是将Visual C++ 2010 Redistributable包添加到项目中,以及在启动时静默安装它的脚本,现在是本机dll的工作.如果你使用的是原生C dll,你也需要这个.

脚步:

1)下载Visual C++ 2010 Redistributable Package,并将其添加到您的项目中.

2)创建一个新的批处理文件并将其添加到它:
vcredist_x64.exe /q /norestart
exit /b 0

3)打开ServiceDefinition.csdef文件并将其添加到相关的WebRole元素下:

<Startup>
  <Task commandLine="InstallVCRedist.bat" executionContext="elevated" taskType="simple" />  
</Startup>  
Run Code Online (Sandbox Code Playgroud)

更新:
Visual C++ 2012已经完成并且相同的脚本可以运行,但是每个人都应该确保Azure运行至少Windows Server 2008 R2,否则启动任务将挂起并且角色将永远不会启动(直到你杀死vcredist进程)任务经理通过RDP).