Я знаю, что это может показаться дублирующим вопросом, но я сильно сомневаюсь в этом.
В настоящее время я делаю приложение Windows Form, в котором пользователь может выбрать файл XSD, используя OpenFileDialog
Как только XSD загружен / выбран, я хочу, чтобы он создал файл .cs из него, используя инструмент XSD разработчика по умолчанию.
Но по какой-то причине он просто открывает выбранный XSD-файл в блокноте (?)
Я попытался прокомментировать код, чтобы придать ему смысл.
//Filter only .xsd files
ofd.Filter = "XSD|*.xsd";
if (ofd.ShowDialog() == DialogResult.OK)
{
//Read file name
string File = ofd.FileName;
string z = ofd.InitialDirectory;
//Start making commands for in the CMD
//Change directory to the folder where the Dev Command prompt is located
string changeDirectory = @"cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\";
//Open the Dev CMD
string bat = "VsDevCmd";
//Change folder to our test folder
string cd = @"cd C:\Users\Pierre\Desktop\testxsd";
//execute xsd /c *selected file* /c is used to create the .cs file.
string command = @"xsd /c " + File;
//Combine the commands into 1 line.
string x = cd + "&" + command;
string xyz = changeDirectory + "&" + bat + "&" + x;
//print the outcome -> When I copy paste this into CMD the .cs file is generated
Console.WriteLine(xyz);
ProcessStartInfo oInfo = new ProcessStartInfo(Environment.ExpandEnvironmentVariables(@"C:\WINDOWS\system32\cmd.exe"), xyz);
oInfo.UseShellExecute = false;
oInfo.ErrorDialog = false;
oInfo.CreateNoWindow = true;
oInfo.RedirectStandardOutput = true;
try
{
Process p = System.Diagnostics.Process.Start(oInfo);
System.IO.StreamReader oReader2 = p.StandardOutput;
string sRes = oReader2.ReadToEnd();
oReader2.Close();
// sRes now contains the output from xsd.exe
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Итак, как вы можете видеть в комментариях, когда я копирую, вставляю console.writeline (xyz) в CMD, он был правильно выполнен, и файл .cs генерируется, как и должно быть.
Однако, когда я просто запускаю этот код, он открывает выбранный xsd в блокноте.
Буквально понятия не имею, что может быть не так