将parameter passing给控制台应用程序

我能够成功地传递参数到控制台应用程序使用以下内容:

ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = Properties.Settings.Default.EmailBlasterAppPath; string subject = txtSubject.Text.Replace(@"""", @""""""); string emailbody = txtEmail.Text.Replace(@"""", @""""""); string args = String.Format("{0},{1},{2},{3},{4}", "SendPlainEmail", B2BSession.Doctor.DoctorId.ToString(), DocEmail.Trim(), subject, emailbody); psi.Arguments = args; psi.UseShellExecute = false; psi.CreateNoWindow = true; Process process = Process.Start(psi); 

但是,一旦进入控制台应用程序,控制台应用程序只需要将参数作为由空格分隔的单个string(请参见下文):

 static void Main(string[] args) 

我的问题是,我将一个主题行和电子邮件正文传递给控制台应用程序,但它只是拾取参数中的第一个单词。 所以,如果我传入这样的东西(注意“testing主题行”应该是一个参数,“testing主体行”将是另一个参数)总共5个参数:

SendPlainEmail 25498 test@test.comtesting主题行testing身体线

但是,控制台应用程序会parsing它有9个参数(每个单词一个):

SendPlainEmail 25498 test@test.comtesting主题行testing身体线

有没有一种方法可以将parameter passing到控制台应用程序,只有5个参数,主体和主体被视为单个参数?

所以,正如您在Process.Start语句之前所看到的,psi.arguments属性中包含的内容。

数据正确传递,只是接收控制台应用程序只能接收由空格分隔的string数组。 因此,控制台应用程序不是分别以“testing主题行”和“testing主体行”作为第四个和第五个参数,如下所示:

参数[3] =testing

args [4] =主题

args [5] =行

参数[6] =testing

args [7] =身体

args [8] =行

所以,代替这个,我怎样才能把“testing主题行”和“testing主体行”分别作为一个项目在数组中?

Solutions Collecting From Web of "将parameter passing给控制台应用程序"