Dies ist mein Code. Die Eingabebefehlszeile ist var1 val1 var2 val2
:So entfernen Sie den exe-Teil der Befehlszeile
var rawCmd = Environment.CommandLine;
// Environment.CommandLine adds the .exe info that I don't want in my command line:
// rawCmd = "path\to\ProjectName.vshost.exe" var1 val1 var2 val2
// A. This correction makes it work, although it is pretty ugly:
var cleanCmd = rawCmd.Split(new string[] { ".exe\" " }, StringSplitOptions.None)[1];
// B. This alternative should be cleaner, but I can't make it work:
var exePath = System.Reflection.Assembly.GetCallingAssembly().Location;
cleanCmd = rawCmd.Replace(string.Format($"\"{exePath}\" "), "");
So B Arbeit zu machen, soll ich in der Lage sein, die .vhost.exe
Infos zu finden (was ich nicht in der Lage bin zu finden).
Aber auch ich würde gerne wissen, ob es eine sauberere Möglichkeit gibt, all dies zu tun.
Was der Grund, warum ich diese erreichen wollen, hier ist die Erklärung (tl; dr: eine json von der Kommandozeile Parsen): https://stackoverflow.com/a/36203572/831138
Warum können Sie nicht einfach den 'args' -Parameter, der an Ihre' Main'-Methode übergeben wurde, an einem geeigneten Ort speichern? –
Warum handelt es sich bei der Befehlszeile um eine einzelne "Zeichenfolge"? Nach meinem Verständnis werden die Argumente bereits als Array geliefert, wie [hier] beschrieben (https://msdn.microsoft.com/en-us/library/cb20e19t.aspx). – Codor
Der Grund ist das Beispiel, das ich am Ende des Beitrags verlinkt habe: http://StackOverflow.com/a/36203572/831138. Das Ziel besteht darin, einen JSON von der Befehlszeile aus zu analysieren. –