如何“掏空”到Azure Webjob中的二进制文件?

大卫·克里德(David Krider)

我需要创建一个脱机作业处理器,该处理器将基于队列使用一组不同的命令行标志来调用控制台可执行文件。我已经在Visual Studio中使用“ Azure WebJobs SDK:队列”模板创建了一个新项目。我知道我可以将其部署到Azure,它将创建一个虚拟机并将其设置为正常运行。

我已经拥有一个网络“工作者角色”,基本上可以做同样的事情,但是在那种情况下,我编写了它所调用的代码,并提供了我的代码所需要的库的源代码。这次,我需要调用别人写的“罐装”二进制文件,而我无权访问源文件。

我可以在项目中创建一个子文件夹,然后将可执行文件(及其所有文件夹和库)转储到该文件夹​​中,但是我不知道如何从我的webjob中调用它。如果二进制文件仅位于项目的子文件夹中,那么一旦将其部署到Azure中的云服务,二进制文件的路径结构将是什么?

另外,此二进制文件确实希望驻留在C:\ Software \ <Directory>中。当将此应用程序部署到Azure中的云服务时,是否可以指定要在虚拟机上创建的此特定外部目录?如果可以的话,它会更好地工作,而且我确切地知道如何调用可执行文件。

大卫·克里德(David Krider)

作为辅助角色的一部分,您可以创建一个子文件夹,并将二进制文件放入其中。(在执行此操作时,您不能在Visual Studio中拖放文件夹,因此,就我而言,我必须创建几个子文件夹并将文件拖放到其中,以使应用程序正常工作。)

在此处输入图片说明

部署后,辅助角色将将此文件夹的任意文件复制到Azure中的辅助服务器,然后可以在其中调用它。部署后,此任意文件夹将位于...TASACDWS\TASACDWS\TASACDWS\csx\Debug\roles\TASACDWS_Worker\approot

辅助角色本身的“ root”或“ base”文件夹是进程的当前目录。因此,如果我的应用程序位于工作角色(在Visual Studio中)下的名为“ Arbitrary_Binary”的文件夹中,则可以使用如下的Process对象来引用它:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.WorkingDirectory = "Arbitrary_Binary";
p.StartInfo.FileName = "Arbitrary_Binary\\Arbitrary_Binary.exe";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章