从perl脚本调用C#可执行文件

时间:2014-04-08 21:31:04

标签: perl c#-4.0 activeperl

我正在尝试从perl脚本执行C#4.0控制台应用程序并尝试捕获应用程序的输出。 C#应用程序是一个多线程应用程序,但它使用普通的Console.WriteLine()函数将输出写入控制台。

要获取输出,我使用perl中的``方法:

my @commands = `app.exe param1 param2`

但是当我运行脚本时,我收到错误:

Unhandled Exception: System.IO.IOException: The handle is invalid.

   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.Console.SetCursorPosition(Int32 left, Int32 top)
   at Netapp.CmDownload.Processor.DownloadProcessor.Start(String[] args)
   at Netapp.CmDownload.CmDownload.Main(String[] args)

终止申请。

注意:C#应用程序是在.Net Framework 4.0上运行的64位应用程序       我尝试使用活动的perl 64bit以及32位版本运行脚本,但没有效果。

1 个答案:

答案 0 :(得分:3)

问题是您的应用程序正在尝试以相对高级的方式使用控制台 - 设置光标位置。在这种情况下,您实际上并没有拥有控制台,您只需要管道输出...因此没有控制台句柄,SetCursorPosition失败。

查看是否有任何命令行选项可以关闭高级控制台处理。 (如果它是您自己的应用程序,请添加一个:)