0

我想运行一个在 Azure Function 应用程序上内部创建的 exe 文件。它做了一些需要 Visual C++ redistributables 2015 的处理,但是它没有安装在运行该函数的虚拟机中,它只带有 2012(我使用 reg 查询来找出这个)。有没有办法让可执行文件正常运行?

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

4

2 回答 2

0

对,那是正确的。Azure 应用服务/Azure 函数在称为沙盒的安全环境中运行,该环境具有一定的限制。限制,例如玩一些 com 组件,写入注册表,User32/GDI32 限制。沙盒在此处进行了描述。

恐怕您将无法访问控制台并安装任何通过脚本运行的第三方库,例如:EXE 或 MSI。因此,您不必显式加载/安装任何东西。

因此,如果您有任何与这些沙盒限制相关的任何内容,那么选择 Azure VM(您可以自己管理操作系统和已安装的库)将更有意义。

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

于 2021-04-05T16:55:39.807 回答
0

我能够完成这项工作。我从一个 .bat 文件运行应用程序,该文件做得很少,但其中一件事是干预 PATH。我对此进行了评论,但仍然无法正常工作,因此我直接从 .exe 文件运行该应用程序,并且将所需的 vc redist dll(其中 4 个)放在同一个文件夹中就可以了。事实证明,尽管在我需要的条件下运行应用程序(带有预热实例的高级计划)比使用 Azure Batch 更昂贵,而且很可能比拥有专用 VM 更昂贵,但这两者都让我更容易满足我的需求预装。

于 2021-04-16T03:49:41.310 回答