Можно ли поместить файл windows (.bat) в папку ресурсов проекта Visual Studio C #? - PullRequest
4 голосов
/ 01 июня 2011

Хотя можно запустить пакетный файл в форме c: location, я хотел бы знать, возможно ли разместить файл .bat в папке ресурсов.

Я пробовал это

Process p = new Process;
p.StartInfo.FileName = @"\Resources\batchfile.bat";

и это

p.StartInfo.FileName = @"\Resources\batchfile";

Оба не работают.

Ответы [ 4 ]

3 голосов
/ 01 июня 2011
string location;

Process p = new Process;

location = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
+@"\Resources\batchfile.bat";

p.StartInfo.FileName = location;
3 голосов
/ 01 июня 2011

Вы хотите включить файл .bat в качестве встроенного ресурса. Поэтому в Visual Studio вы должны открыть «Свойства» в файле и выбрать «Встроенный ресурс» для «Действия сборки».

Теперь для забавной части .... в вашем приложении вы захотите извлечь файл и записать его на диск перед выполнением, используя метод GetManifestResourceStream для объекта Assembly. Это немного сложно, потому что вам нужно передать имя ресурса методу, и это имя в конечном итоге будет основано на вашем пространстве имен сборок, плюс путь (так что если ваш проект MyProject и ваш файл в Resources\MyBat.bat, тогда имя ресурса будет MyProject.Resources.MyBat.bat ... по крайней мере, я думаю, это правильно)

На самом деле существует существующий вопрос о том, как это сделать здесь , и у него гораздо более хороший пример кода, чем тот, который я собирался поднять. :)

3 голосов
/ 01 июня 2011

Вы можете поместить пакетный файл в любое место файловой системы, которое вы хотите.

Похоже, что путь к вашему пакетному файлу неверен. Пути с обратной косой чертой интерпретируются относительно корневого каталога текущего диска. Это, вероятно, не там, где находится ваш командный файл. Вероятно, он находится в подкаталоге Resources собственной установочной папки вашего приложения. По крайней мере, удалите ведущие обратные слеши из этих строк. Тогда они будут интерпретироваться относительно текущего рабочего каталога вашего процесса.

Хотя было бы лучше использовать полный путь. Текущий рабочий каталог имеет тенденцию меняться, когда вы не ожидаете.

1 голос
/ 01 июня 2011

Ресурсы (вашего C # проекта) - это, как правило, файлы, связанные с вашей сборкой во время компиляции. Если вы поместите пакетный файл туда, вы должны извлечь его во время выполнения в папку, например, в папку% TEMP%, и запустить ее оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...