Das Folgende ist nur ein Beispiel für die Funktionalität.Wie starte ich eine .exe mit einer JSON-Zeichenfolge als Parameter richtig?
Ich habe ein Modell wie folgt aus:
public class StartParams
{
public string ParameterOne { get; set; }
public string ParameterTwo { get; set; }
public string ParameterThree { get; set; }
}
Aus einer WPF-Anwendung. Ich bin Serialisierung es als JSON wie folgt aus:
var startParams = new StartParams
{
ParameterOne = "parameterOne",
ParameterTwo = "parameterTwo",
ParameterThree = "parameterThree"
};
var jsonStartParams = JsonConvert.SerializeObject(startParams);
Dann habe ich als Parameter eine EXE-Datei mit dem JSON-String bin starten.
ProcessStartInfo info = new ProcessStartInfo
{
Arguments = jsonStartParams,
FileName = "C:\\Folder\\File.exe"
};
Process.Start(info);
In File.exe Ich habe eine Aufgabe, die einen String:
string[] parameters = {jsonStartParams};
File.Program.Main(parameters);
:
public static async Task DoSomething(string jsonStartParams)
{
var startParams = JsonConvert.DeserializeObject<StartParams>(jsonStartParams);
Wenn das Debuggen, ich die statische Main-Methode in File.exe wie folgt aufrufen können
Das funktioniert wie ein Charme, aber sobald ich die .exe-Datei mit Process.Start mit dem JSON-String-Parameter aufrufen, schlägt es mit
fehlNewtonsoft.Json.JsonReaderException
an der ersten Stütze in dem Objekt JSON.
Kann mir bitte jemand in die richtige Richtung einer Lösung zeigen?
Vielen Dank!
Ich glaube nicht, dass Sie versuchen sollten, das zu tun. Es ist sehr schwierig, eine Windows-Befehlszeichenfolge ordnungsgemäß zu umgehen. Die folgende Antwort wird nicht helfen. Speichern Sie stattdessen die JSON-Zeichenfolge in einer TEMP-Datei und verwenden Sie den Dateinamen als Parameter - oder leiten Sie sie in die .exe über stdin – Jacob