Azure Functions 上的 VCRedist 2015+

VCRedist 2015+ on Azure Functions

我想要 运行 一个在 Azure Function 应用程序内部创建的 exe 文件。它执行一些需要 Visual C++ 可再发行组件 2015 的处理,但是虚拟机中没有安装功能 运行s,它仅随 2012 (I used reg query to find this out) 一起提供。有没有办法正确制作可执行文件 运行?

我已经尝试将一些必需的 dll 复制到与我的 exe 相同的文件夹中,并将路径添加到环境变量 %PATH%,这在 Functions 上不起作用,但在常规 VM 上起作用(可能是因为Functions VM 的沙盒特性)。

是的,没错。 Azure App Service/Azure Function 运行s 在一个称为沙箱的安全环境中,它施加了一定的限制。限制,例如玩弄某些 com 组件、写入注册表、User32/GDI32 限制。沙箱描述 here.

恐怕您将无法通过脚本访问控制台并安装任何 运行 的第 3 方库,例如:EXE 或 MSI。所以你不必明确 load/install 任何东西。

因此,如果您有任何与这些沙盒限制相关的事情,那么选择 Azure VM(您可以自己管理 OS 和安装的库)会更有意义。

仅供参考,您可以参考this查看您的应用服务安装了哪个包。 [注意:由于本文档较旧,您可能看不到最新的 VS 示例,但它会指导您检查库的版本详细信息]

我能够完成这项工作。我是 运行 来自 .bat 文件的应用程序,它做的很少,但其中一件事是干预 PATH。我评论说出来但仍然没有用,所以我直接从 .exe 文件运行应用程序,并且在同一文件夹中具有所需的 vc redist dll(其中 4 个)就可以了。 事实证明,运行 应用程序在我需要的条件下(具有预热实例的高级计划)比使用 Azure Batch 更昂贵,而且很可能比拥有专用 VM 更昂贵,两者都使它更容易一些预安装我的必需品。