Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用xml参数运行exe_C#_Xml - Fatal编程技术网

C# 使用xml参数运行exe

C# 使用xml参数运行exe,c#,xml,C#,Xml,我有一个SqlXml参数,我想把它作为参数发送给我的控制台应用程序。 我该怎么做 public static void p_createExcel(SqlString procName, SqlString fileName, SqlString filePath, SqlXml xmlParams, out SqlBoolean result) { System.Diagnostics.Process installProcess = new System.Diagnostics.Pr

我有一个SqlXml参数,我想把它作为参数发送给我的控制台应用程序。 我该怎么做

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;
}
尝试使用要发送的SqlXml对象的属性作为参数:

installProcess.StartInfo.Arguments = xmlParams.Value;
尽管如此,正如@Marco所指出的,这可能导致某种不可预测的行为。要使事物更优雅,您可以尝试以下方法:

将SqlXml对象的值保存到文件中,查看是否始终要创建新文件。 更改应用程序createReport.exe以接受文件名作为输入 将文件名传递给进程

installProcess.StartInfo.Arguments=新创建的xml文件的路径


我认为你有两种方式。首先:您可以将字符串保存到文件中,并将文件名传递到控制台应用程序。第二:您可以打开exe并将字符串发送到exe输入流…createReport.exe也是.NET应用程序吗?@IdanArye:这不重要,因为参数可以传递到每个应用程序@Marco是正确的,但是如果它是一个.NET应用程序,它可以作为打开,并且可以调用Main以外的方法-一个接受SqlXmlor XmlDocument的方法。或者直接使用XDocument。目前,我正在保存一个文件并将文件名作为Arguments传递,该文件名是唯一的,因为多个并发用户可以执行此程序集。但是@Marco建议听起来是个更好的主意。因为在保存文件和在exe中打开文件之间可能会发生错误,文件将保留在磁盘上。是的,EXE是网络中的控制台应用程序。您是否有一些示例如何从程序集调用其他方法并传递sqlXml参数。对于System.Diagnostics.Process,这可能吗?可能该字符串包含,因此字符串的各个部分将在不同的参数中拆分。。。我想这可能是个问题,如果字符串也包含CR,就不算了……谢谢,@Marco,谢谢你们的输入。我已经编辑了答案。