| ♥ 0 | Boa tarde, Após alguns testes verificamos que as extensões registadas no ERP V10, são colocadas em:
Pelos testes feitos, todas as dependências de qualquer extensão têm que ser colocadas na pasta *\Apl\* do ERP, caso contrário ocorrem erros porque o ERP não consegue localizar as mesmas. A questão que coloco é se efetivamente é esta a forma\localização correta para distribuir as nossas extensões e respetivas dependências? Marcado como spam |
Comentários Outro problema relacionado com dependências acontece caso algum dos nossos componentes referenciados nas extensões utilizem também componentes DevExpress ou CrystalReports (Visual Studio) de versões diferentes das utilizadas pela Primavera no ERP. Haverá alguma forma de contornar este problema, ou seja, conseguirmos usar numa extensão nossa componentes devexpress ou crystal ou outros de versões diferentes? A não ser possível, qual a versão que vocês usam atualmente e qual a vossa politica sobre migração de versões nestes componentes?
Já identificamos pelos menos: DevExpress for Winforms; Crystal Reports; |
| Resposta privada Bom dia, Não consigo solução para esta questão que não seja colocar as DLLs dependentes na pasta C:Program Files (x86)PRIMAVERASG100Apl. Pelo que entendo, se a minha extensão tem um qualquer tipo declarado numa outra DLL dependente, teria que ser a aplicação que faz load da minha 1ªDLL a criar mecanismos para resolver as restantes dependências que possam existir, neste caso o ERP. O erro está a acontecer logo no LOADGETTYPES da extensão e como tal não há qualquer chamada ou ponto de entrada em que eu possa na DLL que está a ser carregada subscrever o AssemblyResolver. Uma sugestão seria ter um novo diretório ou lista de diretórios configurável, algures no administrador ou backstage da extensibilidade, para o ERP tentar resolver dependências das extensões. Marcado como spam | |
| Resposta privada Olá Helder As extensões devem estar apenas nas pastas Extensions e CommonExtensions. São lá colocadas através do processo de registo como podes ler neste artigo Registo de Extensões. , nunca as deves adicionar de forma manual, pois assim não serão reconhecidas pelo ERP. A terceira opção que indica é errada e não deve ser usada. As dependencias devem podem estar nas pastas que entenderem, alias recomendamos que as vossas DLL's estejam em pastas proprias nunca na APL, mas para isso é necessario criar mecanismos de resolver essas dependencias, para isso recomendo a leitura deste artigo Utilizar assembly Resolver. Marcado como spam Comentários OK.
Vou testar o assembly resolver! E relativamente ao problema dos componentes DevExpress ou CrystalReports (Visual Studio) de versões diferentes das utilizadas pela Primavera no ERP.
Haverá alguma forma de contornar este problema, ou seja, conseguirmos usar numa extensão nossa componentes devexpress ou crystal ou outros de versões diferentes?
A não ser possível, qual a versão que vocês usam atualmente e qual a vossa politica sobre migração de versões nestes componentes?
Já identificamos pelos menos: DevExpress for Winforms; Crystal Reports; Estou com o seguinte problema na utilização do Assembly Resolver.
Estou a obter um erro ao abrir o ERP (ainda no quadro de login\arranque) fica na indicação "30% Iniciar motor de extensibilidade":
"Erro na abertura da Empresa: Não é possível carregar um ou mais tipos pedidos. Obtenha a propriedade LoaderExceptions para mais informação." Pelo que entendo, o primeiro ponto onde posso executar código de extensibilidade é na abertura da empresa! Correto? É aí que estou a tentar subscrever o evento assemblyresolver.
Mas o ERP primeiro executa a inicialização da extensibilidade e só depois disso a abertura da empresa. Ou seja, está a tentar carregar\validar as minhas DLLs sem ainda ter passado no AbrirEmpresa e como tal o evento assemblyresolver não está ainda subscrito! Sabendo que estamos a falar de uma DLL e não de um EXE, em que momento posso subscrever o assemblyresolver? |