2017-01-30 3 views
1

Я хотел бы создать небольшие приложения для управления моими проектами, чтобы они работали так, что после выбора элемента из списка проектов консоль изменяет текущий каталог на проект и выходит из программы, оставляя консоль в директории corect, тогда вы может запускаться, например, через код или http-сервер.Могу ли я изменить текущий каталог с помощью консольного приложения C#?

Я судимое
Environment.CurrentDirectory = direcory
Directory.SetCurrentDirectory(directory)
ни один из он работал для меня:/

+5

Я не думаю, что вы можете это сделать, как только приложение C# прекратит работу, вы не сможете его открыть. Вы можете открыть командную строку из C# и передать ей команду каталога изменений. http://stackoverflow.com/questions/1469764/run-command-prompt-commands –

+0

Ваше консольное приложение и все остальное-вы-хотите-в-run будут выполняться в разностных процессах, поэтому будут иметь разные «текущие каталоги». Один не повлияет на другого. – series0ne

+0

[batch] (https://en.wikibooks.org/wiki/Windows_Batch_Scripting#CD) было бы лучше подходит, я думаю. – Fildor

ответ

0

Я думаю, что это следует сделать трюк. Кроме того, вы можете выполнить какую-либо команду на нее из кода:

var startInfo = new ProcessStartInfo 
{ 
    WorkingDirectory = @"SomeDirectory", 
    FileName = "cmd.exe", 
    // Arguments = "start http-server" 
}; 
var process = new Process {StartInfo = startInfo}; 
process.Start(); 
+0

Я вижу вашу точку зрения, но она открывает новый cmd, так что это не то, что я хотел:/ , но стали: D –

0

Если я правильно понимаю ваш вопрос, по сути вы хотите написать # программу C, которая выполняет аналогичную функцию для команды CD в Prompt среды командной строки.

К сожалению, вы не можете сделать это из программы C#, так как программа запускается в своем изолированном AppDomain, который отбрасывается (вместе с вашим новым рабочим каталогом), когда ваша программа завершается. Кроме того, вы не можете повлиять на создание AppDomain при запуске процесса (командной строки).