2013-12-11 56 views
0

我有SqlXml参数,我想将它作为参数发送给我的控制台应用程序。 我该怎么做?用xml参数运行exe

public static void p_createExcel(SqlString procName, SqlString fileName, SqlString filePath, SqlXml xmlParams, out SqlBoolean result) 
{ 
    System.Diagnostics.Process installProcess = new System.Diagnostics.Process(); 
    //settings up parameters for the install process 
    installProcess.StartInfo.FileName = @"d:\Documents\Temp\console1\createReport.exe"; 
    installProcess.StartInfo.UseShellExecute = false; 

    installProcess.StartInfo.Arguments = xmlParams//this doesn't work 
    installProcess.Start(); 

    installProcess.WaitForExit(); 
    result = (installProcess.ExitCode == 0) ? true : false; 
} 
+0

你必须在我看来,有两种方式。首先:您可以将您的字符串保存到文件并将文件名传递给您的控制台应用。第二:你可以打开exe文件并将你的字符串发送到exe输入流... – Marco

+0

'createReport.exe'也是一个.NET应用程序吗? –

+0

@IdanArye:这不重要,因为参数可以传递给每个应用程序! – Marco

回答

0

尝试使用SqlXml对象的Value属性来发送作为参数:

installProcess.StartInfo.Arguments = xmlParams.Value; 

虽然,作为@Marco指出,这可能会导致(不知)不可预测的行为。为了让事情变得更优雅,你可以试试这个:

  1. 保存SqlXml对象的Value到一个文件中(见Path.GetTempFileName,如果你想一直创建一个新文件)。
  2. 更改您的应用程序(createReport.exe)接受文件名作为输入
  3. 传递文件名到您的过程

    installProcess.StartInfo.Arguments = "path to newly created xml file";

+0

可能是该字符串包含“,因此字符串的各个部分将被拆分为不同的参数......我认为这可能是一个问题,不包括字符串是否包含CR ... – Marco

+0

感谢@Marco的输入。我编辑了答案。 – RePierre