dotnet/msbuild

Provide a method to execute an external command without using a shell

Open

#399 geöffnet am 10. Dez. 2015

Auf GitHub ansehen
 (6 Kommentare) (3 Reaktionen) (0 zugewiesene Personen)C# (1.364 Forks)batch import
help wantedneeds-designtriaged

Repository-Metriken

Stars
 (5.062 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 11T 7h) (125 gemergte PRs in 30 T)

Beschreibung

The Exec task always spawns a shell to invoke the external command. This is convenient, but non-portable, insecure (though not exploitable here), and requires non-portable escaping.

A better solution is to provide a way to execute an external command without using a shell. It should have the following properties:

  • Lists are respected.
  • Any character can be passed to an external command. No manual escaping required.
  • Special characters in property values do not cause problems.
  • No shell is invoked, unless the external command is the shell.
  • It should be possible to pass multiple arguments to the shell
  • The syntax should be something other than requiring a seperate XML element per argument.

Contributor Guide