Pergunta

Estou fazendo um experimento com o propósito de fazer um programa executável funcionar no Windows Azure.

Primeiro tentei fazê-lo funcionar usando a área de trabalho remota com funções do Windows Azure (ref http://msdn.microsoft.com/en-us/library/windowsazure/gg443832.aspx), copiei meu exe para a área de trabalho remota, e também algumas dlls, então uso "regsvr32.exe" para registrar essas dlls, aí veio o problema:"a configuração lado a lado está incorreta".

Eu sei como resolver esse problema quando ele está no meu próprio computador (apenas certifique-se de que as dependências corretas estejam no diretório "winsxs"), mas agora está na área de trabalho remota usando o Windows Azure Roles e não tenho permissão para adicionar o dependências corretas no diretório winsxs.então vim aqui pedir uma ajuda, desde já agradeço!

PS:Não consigo alterar essas DLLs referenciadas pelo meu exe.

Foi útil?

Solução

Eu diria que o problema pode ser apenas porque algumas das DLL de referência não estão na VM do Azure, portanto, ao implantar seu pacote (EXE + DLL), você precisa ter certeza de que todos os componentes estão registrados no sistema.Com certeza é bom que você possa fazer login no Azure VM usando RDP e testar como sua implantação funciona, no entanto, o melhor seria implantar seu pacote por meio de um web/worker e, em sua lata, uma função de trabalhador parece adequada.

Você ainda precisa cavar mais para descobrir por que o EXE não funcionou e se fornecer mais detalhes sobre as bibliotecas e o processo, podemos ajudar, mas as informações acima são muito menores para fornecer sugestões.

Para resolver esse problema, aqui está o que você deve fazer:

  1. Crie um arquivo zip e inclua todas as DLL/EXE de referência, arquivo estático necessário para sua aplicação
  2. Crie uma função de trabalho e adicione este arquivo zip como conteúdo e defina sua propriedade Copy local como true.
  3. Adicione um arquivo CMD Batch ao seu projeto do Azure e escreva todas as etapas conforme abaixo:

    3.1.Descompacte os arquivos em uma pasta local 3.2.Registre toda a DLL usando o Processo RegSvr32 3.3.Configure seu exe como ProgramEntryPoint em ServiceDefinition.csdef

Usando seu EXE como ProgramEntryPoint, o processo host da função de trabalho irá iniciá-lo e monitorá-lo, a configuração é semelhante a abaixo:

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

Depois de ter as configurações acima, você pode implantar o Pacote Azure e, em seguida, o RDP na VM do Azure e testar se seu aplicativo tem algum problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top