2013-12-11 89 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