Запуск исполняемого файла в рабочей роли Azure: проблемы с путями

Я попытался добавить исполняемый файл в свою рабочую роль Azure и вызвать его из кода. Но я не уверен на 100%, как должен выглядеть путь. Я добавил исполняемый файл в Visual Studio в свой проект рабочей роли, установил содержимое и всегда копировал. В моей рабочей роли я звоню

Process.Start(Path.Combine(Environment.GetEnvironmentVariable("RoleRoot"), "Executable.exe"));

Что приводит к

Необработанное исключение AppDomain Exception: система не может найти файл, указанный в System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) [...] в System.Threading.ThreadHelper.ThreadStart()

Имя моего проекта Azure — «AzureProject», имя моей рабочей роли — «QueueWorker», исполняемый файл «Executable.exe». Я полагаю, что путь неправильный.


person alapeno    schedule 24.11.2011    source источник


Ответы (1)


Что-то не так с путем, вы правы. Вот несколько вещей, которые вы, возможно, захотите проверить:

  • Свойство "Копировать в вывод" исполняемого файла, который является частью вашего проекта, должно иметь значение "копировать все".
  • Попробуйте добавить @"\approot" после RoleRoot и перед "Executable.exe" в вашем path.combine.
  • Вы также можете попробовать получить местоположение исполняемого файла из Assembly.GetExecutingAssembly().Location — это даст вам путь к сборке вашей рабочей роли, где также должен находиться ваш исполняемый файл. Просто не используйте этот подход с WebRole, там он имеет другое значение (временные файлы asp.net).
person astaykov    schedule 24.11.2011
comment
Спасибо, это работает с Process.Start(Path.Combine(Environment.GetEnvironmentVariable(RoleRoot) + @\, @approot\Executable.exe)); - person alapeno; 24.11.2011