2017-02-14 7 views
0

Я делаю проект WPF, который импортирует проект C#, просматривая и создавая. Вот мой маленький просмотра и поиска код:Импортируйте проект C# и запустите его в фоновом режиме

var dialog2 = new System.Windows.Forms.FolderBrowserDialog(); 
System.Windows.Forms.DialogResult result2 = dialog2.ShowDialog(); 
textBox1.Text = dialog2.SelectedPath; 

Найдя его, нажав на кнопку вызова, я этот код:

Process.Start(textBox.Text); 

Этот код запускает приложение напрямую. Мне нужно создать приложение в фоновом режиме.

Я не уверен, как достичь этого.

+0

Так просматриваемым в папку, которая содержит исходный код, и вы хотите скомпилировать и запустить его? – GoneUp

ответ

0

Я не уверен, что вы подразумеваете, создавая приложение в фоновом режиме, но я бы предложил создать библиотеку (например, DLL), построить ее и впоследствии ссылаться на нее из другого приложения.

0

Если вы посмотрите на класс процесса, есть некоторые варианты. Во-первых, вы можете просто вернуть свое окно вперед. Во-вторых вы можете скрыть окно с помощью startinfo не показывая окна, или свести к минимуму его ..

См https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx

+0

То, что я понимаю из вопроса ОП, хотя и не очень понятно, заключается в том, что его проблема заключается в построении решения из пути ... – Pikoh

1

Для создания проекта из командной строки в фоновом режиме вы можете использовать msbuild

Чтобы найти MSBuild пути к исполняемому файлу на вашей системе, можно выполнить запрос реестра с:

reg.exe query "HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0" /v MSBuildToolsPath 

После вы знаете путь, запустите MSBuild команду для создания вашего проекта. Например:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild SolutionName.sln 

Если вы хотите запустить команду сборки в фоновом режиме запустить процесс с CreateNoWindow = true Например:

Process p = new Process(); 
p.StartInfo = new ProcessStartInfo("C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild SolutionName.sln"); 
p.StartInfo.WorkingDirectory = @"C:\YourWorkingDirectory"; 
p.StartInfo.CreateNoWindow = true; 
p.Start();