C#在Process命令行运行时找不到%PROGRAMFILES%文件夹

最近在写一个小程序,能调用其他程序CLI命令进行自动化输出

await Task.Run(() =>
{
    //处理各种文件夹路径
    string exePath = @"%PROGRAMFILES%\Jawset Postshot\bin\postshot-cli.exe";
});

但是在Process.Start(); 的时候发现程序报错,提示找不到路径目标。

纳闷!

我用cmd和文件夹浏览器,都确定了没问题,但在程序中就是报错。

解决方案:

 这是一个环境变量的坑,CMD和文件夹浏览器都会自动解析%PROGRAMFILES%,但是.NET中时不会自动替换的,必须手动展开:

string path = $"{Environment.GetEnvironmentVariable("PROGRAMFILES")}\\Jawset Postshot\\bin\\postshot-cli.exe";

cmd是解析器,它会解析%VAR% ,但C#中Process只是系统API调用,并不会自动展开变量。

你可能感兴趣的:(c#,CLI)