我正在VB.NET中編寫命令行應用程序。此應用程序調用另一個msxsl.exe來運行XSL轉換。我使用Process類來做到這一點:將標準輸出從進程(msxsl.exe)重定向到VB.NET中的字符串
Dim process = New Process()
process.StartInfo.FileName = "msxsl.exe"
process.StartInfo.Arguments = "base.xml test.xsl -o styled.xml"
process.StartInfo.UseShellExecute = False
process.StartInfo.CreateNoWindow = True
process.StartInfo.RedirectStandardOutput = True
process.Start()
這部分的偉大工程。我希望它能夠將此過程的輸出顯示到我的應用程序的控制檯。我已經閱讀了幾篇文章解釋這種方法,但在這種情況下似乎不起作用。輸出是一個空字符串。
Dim output As String = process.StandardOutput.ReadToEnd()
process.WaitForExit()
Console.WriteLine(output)
我已經驗證,如果我自身運行msxsl可執行文件(即,在運行「MSXSL.EXE base.xml test.xsl -o styled.xml」),它顯示在命令行上輸出。我究竟做錯了什麼?
編輯:我應該注意到msxsl進程目前由於格式錯誤的XML文件而失敗。它正在顯示此錯誤消息:
執行樣式表'test.xsl'時發生錯誤。
代碼:0x800c0006
系統找不到指定的對象。
這正是我想要顯示在我的應用程序的控制檯型的事(或最終的日誌文件。)
好奇:你爲什麼不使用內置(.NET的XSLT能力又名[XsltCompiledTransform](http://msdn.microsoft.com/en-us/library/system.xml .xsl.xslcompiledtransform.aspx)? – Tomalak 2010-11-24 14:26:13
Tomalak,我不知道有這樣的課程,謝謝你的提示,我會看看我能否以這種方式實現它 – Jeremy 2010-11-24 14:30:20