Проблема параллельной конфигурации на виртуальной машине Windows Azure

StackOverflow https://stackoverflow.com//questions/10650498

Вопрос

Я провожу эксперимент с целью заставить исполняемую программу работать на Windows Azure.

Сначала я попытался заставить его работать с помощью удаленного рабочего стола с ролями Windows Azure (ссылка http://msdn.microsoft.com/en-us/library/windowsazure/gg443832.aspx), я скопировал свой exe на удаленный рабочий стол, а также несколько библиотек, затем использую «regsvr32.exe» для регистрации этих библиотек, затем возникла проблема:«Параллельная конфигурация несовместима».

Я знаю, как решить эту проблему, когда она находится на моем компьютере (просто убедитесь, что правильные зависимости находятся в каталоге «winsxs»), но теперь она находится на удаленном рабочем столе с использованием ролей Windows Azure, и у меня нет разрешения на добавление правильные зависимости в каталог winsxs.вот я и пришел попросить помощи, заранее спасибо!

ПС:Я не могу изменить эти библиотеки DLL, на которые ссылается мой exe.

Это было полезно?

Решение

Я бы сказал, что проблема может быть только в том, что некоторые из эталонных DLL не находятся в виртуальной машине Azure, поэтому при развертывании пакета (EXE + DLL) вам необходимо убедиться, что все компоненты зарегистрированы в системе.Конечно, хорошо, что вы можете войти в виртуальную машину Azure с помощью RDP и проверить, как работает ваше развертывание, однако лучше всего было бы развернуть ваш пакет через сеть/рабочую среду, и в вашем случае рабочая роль кажется подходящей.

Вам все равно придется копать дальше, чтобы выяснить, почему EXE не работает, и если вы предоставите более подробную информацию о библиотеках и процессе, мы можем помочь, но приведенная выше информация не дает рекомендаций.

Чтобы решить такую ​​проблему, вот что вам нужно сделать:

  1. Создайте zip-файл и включите в него все эталонные DLL/EXE-файлы, статические файлы, необходимые для вашего приложения.
  2. Создайте рабочую роль, добавьте этот zip-файл в качестве содержимого и установите для его свойства Copy local значение true.
  3. Добавьте пакетный файл CMD в свой проект Azure и запишите все шаги, как показано ниже:

    3.1.Разанипируйте файлы в локальную папку 3.2.Зарегистрируйте весь DLL, используя процесс REGSVR32 3.3.Настройте свой exe как ProgramEntryPoint в ServiceDefinition.csdef.

Используя ваш EXE-файл в качестве ProgramEntryPoint, хост-процесс рабочей роли запустит его и будет контролировать его. Настройка выглядит следующим образом:

<Runtime executionContext="limited">
 <EntryPoint>
   <ProgramEntryPoint commandLine="your_exe_name.exe" setReadyOnProcessStart="true" />
 </EntryPoint>
</Runtime>

Получив вышеуказанные настройки, вы можете развернуть пакет Azure, а затем RDP на виртуальной машине Azure и проверить, есть ли в вашем приложении какие-либо проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top