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

标签 c# azure c++-cli cloud unmanaged

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

本地一切正常,但当我将解决方案发布到 Azure 云时,出现错误,提示找不到模块/dll:

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

为什么找不到DLL文件?它会去到错误的地方还是根本没有被编译?有什么办法可以检查吗?谢谢!

最佳答案

问题是云端缺少 Visual C++ 2010 运行时库。

我所做的是将 Visual C++ 2010 Redistributable 包添加到项目中,以及一个在启动时静默安装它的脚本,现在 native dll 开始工作了。如果您使用 native C dll,则还需要这个。

步骤:

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

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

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

<Startup>
  <Task commandLine="InstallVCRedist.bat" executionContext="elevated" taskType="simple" />  
</Startup>  

更新:
Visual C++ 2012已发布并且相同的脚本可以工作,但每个人都应该确保 Azure 至少运行 Windows Server 2008 R2,否则启动任务将挂起并且角色将永远不会启动(直到您终止 vcredist 进程)通过 RDP 在任务管理器中)。

关于c# - Windows Azure 找不到 C++/CLI 项目的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122213/

相关文章:

c# - 为什么 System.Timers.Timer 不更新非繁忙的 UI?

c# - 为什么此代码会为(看起来是)相同的输入提供两个不同的输出?

c# - 在现有查询中插入 Linq 查询部分

c++-cli - 为什么 Finalize 应该受到保护?

windows - c++/cli DLL 在 Win 8.1 下失败

c# - native C++ dll 的 C++/CLI 包装器

c# - 何时使用 ReleaseComObject 与 FinalReleaseComObject?

asp.net - 将 ADO.NET 实体数据模型添加到 Azure 函数项目会导致异常

node.js - 我不断从 Bing 的 API 获取 "404 - Resource not found"

c# - Windows azure Worker Role 每周发送电子邮件