Проблема параллельной конфигурации на виртуальной машине Windows Azure
-
11-12-2019 - |
Вопрос
Я провожу эксперимент с целью заставить исполняемую программу работать на 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 не работает, и если вы предоставите более подробную информацию о библиотеках и процессе, мы можем помочь, но приведенная выше информация не дает рекомендаций.
Чтобы решить такую проблему, вот что вам нужно сделать:
- Создайте zip-файл и включите в него все эталонные DLL/EXE-файлы, статические файлы, необходимые для вашего приложения.
- Создайте рабочую роль, добавьте этот zip-файл в качестве содержимого и установите для его свойства Copy local значение true.
Добавьте пакетный файл 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 и проверить, есть ли в вашем приложении какие-либо проблемы.