我的代码:
Process kurulum1 = new Process();
kurulum1.StartInfo.FileName = @"C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Visual Studio 2017\Visual Studio Tools\Developer Command Prompt for VS 2017.lnk";
kurulum1.StartInfo.Arguments = "cd C:\\Users\\stajyer3\\Documents\\Visual Studio 2017\\Projects\\TestWindowsService\\TestWindowsService\\bin\\Debug InstallUtil.exe "TestWindowService.exe" ";
kurulum1.Start();
kurulum1.WaitForExit();
不工作
错误:
[错误:parse_cmd.bat]命令行参数无效:' cd'。争论 将被忽略。 [错误:parse_cmd.bat]无效的命令行参数: ' C:\用户\ stajyer3 \文件\视觉&#39 ;.参数将被忽略。 [错误:parse_cmd.bat]命令行参数无效:' Studio'。 参数将被忽略。 [错误:parse_cmd.bat]命令行无效 参数: ' 2017 \项目\ TestWindowsService \ TestWindowsService \ BIN \调试&#39 ;. 参数将被忽略。
** Visual Studio 2017开发人员命令提示符v15.0.26430.14 **版权所有(c)2017 Microsoft Corporation ************************************************** ******************** [错误:VsDevCmd.bat] * VsDevCmd.bat遇到错误。环境 可能不完整和/或不正确。 *
答案 0 :(得分:3)
你在这里犯了很多错误,不知道你的目标很难说哪个是最差的
ProcessStartInfo.FileName
应该是您要执行的文件
不是开始菜单快捷方式
ProcessStartInfo.Arguments
是命令行参数而不是a
命令
您正在使用的命令似乎是尝试更改
工作目录这应该完成
ProcessStartInfo.WorkingDirectory
您正在使用的字符串因为您正在退出而被破坏
字符串使用"但是你随身携带,所以我必须
假设你的意思是"在你需要的情况下在字符串里面
用\来区分它们然后看起来像"he said \"delimit
your strings\" "
,如果你使用@符号那么
分隔符变为""不是\"
参数是空格分隔的字符串,因此如果您的参数包含
诸如长格式文件名之类的空格然后你需要包围它们
引用"所以ProcessStartInfo.Arguments = "a b c:\\temp";
将通过args" a"," b"和" c:\ temp"执行程序,但ProcessStartInfo.Arguments = "a literal string arg";
将每个单词作为单独的参数ProcessStartInfo.Arguments = "\"a literal string arg\"";
传递,这将传递一个arg与整个字符串
答案 1 :(得分:0)
您需要将路径括在引号中(并转义文件名周围的引号)
kurulum1.StartInfo.Arguments = "cd \"C:\\Users\\stajyer3\\Documents\\Visual Studio 2017\\Projects\\TestWindowsService\\TestWindowsService\\bin\\Debug InstallUtil.exe\" \"TestWindowService.exe\" ";
答案 2 :(得分:0)
给它一个旋转:
var kurulum1 = new Process
{
StartInfo =
{
FileName = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe",
WorkingDirectory =
"C:\\Users\\stajyer3\\Documents\\Visual Studio 2017\\Projects\\TestWindowsService\\TestWindowsService\\bin\\Debug",
Arguments = "TestWindowService.exe"
}
};
kurulum1.Start();
kurulum1.WaitForExit();
无需涉及Developer Command Prompt
- 您可以直接调用installutil
。