Я пытаюсь вызвать esriRegAsm.exe с аргументами из программы на C #.Цель состоит в том, чтобы зарегистрировать Dll.Поэтому я обычно вызываю esriRegAsm.exe с Dll в качестве аргумента плюс некоторые дополнительные параметры (/ p: Desktop / s).Это прекрасно работает, если я наберу его в cmd.exe.Почему-то я думаю, что процесс отправляет только первую строку в cmd, а не весь список аргументов, но мне нужно "" для пробела в путях.Для отладки я добавил окно сообщения и строки вроде бы в порядке.
Обратная косая черта или двойная обратная косая черта кажутся неважными.
string targetDir = this.Context.Parameters["targ"];
string programFilesFolder = this.Context.Parameters["proFiles"];
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C \"" + programFilesFolder + "Common Files\\\\ArcGIS\\\\bin\\\\esriRegAsm.exe\" " + "\"" + targetDir + "RArcGISTest.dll\" /p:Desktop /s";
MessageBox.Show("/C \"" + programFilesFolder + "Common Files\\\\ArcGIS\\\\bin\\\\esriRegAsm.exe\" " + "\"" + targetDir + "RArcGISTest.dll\" /p:Desktop /s");
process.StartInfo = startInfo;
process.Start();
Поскольку я не могу прикрепить изображение окна сообщения... вывод:
/ C "C: \ Program Files (x86) \ Common Files \ ArcGIS \ bin \ esriRegAsm.exe" "C: \ install \ RArcGISTest.dll" / p: Рабочий стол /s "