我想说这个问题可能只是因为一些参考 DLL 不在 Azure VM 中,所以当你部署你的包(EXE + DLL)时,你需要确保你所有的组件都在系统中注册。您可以使用 RDP 登录 Azure VM 并测试您的部署是如何工作的,这当然很好,但是最好的方法是通过 web/worker 部署您的包,并且在您的 can 中,worker 角色似乎很合适。
您仍然需要进一步挖掘以找出 EXE 不起作用的原因,如果您提供有关库和流程的更多详细信息,我们可能会有所帮助,但上述信息很少提供建议。
要解决此类问题,您应该这样做:
- 创建一个 zip 文件并包含应用程序所需的所有参考 DLL/EXE、静态文件
- 创建一个 Worker 角色并将此 zip 文件添加为内容并将其属性 Copy local 设置为 true。
将 CMD Batch 文件添加到您的 Azure 项目并编写所有步骤,如下所示:
3.1。将文件解压缩到本地文件夹 3.2. 使用 Regsvr32 进程 3.3 注册所有 DLL。将您的 exe 作为 ProgramEntryPoint 设置到 ServiceDefinition.csdef
使用您的 EXE 作为 ProgramEntryPoint,工作角色主机进程将启动它并监视它,设置如下所示:
<Runtime executionContext="limited">
<EntryPoint>
<ProgramEntryPoint commandLine="your_exe_name.exe" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
完成上述设置后,您可以部署 Azure 包,然后将 RDP 部署到 Azure VM 并测试您的应用程序是否有任何问题。