Fórum
Ver pergunta

Distribuição das assemblys de extensibilidade, localização das assemblys dependentes   

104 visualizações
0
0

Boa tarde,

Após alguns testes verificamos que as extensões registadas no ERP V10, são colocadas em:

  1. Extensões carregadas para todas as empresas
    1. C:\Program Files (x86)\PRIMAVERA\SG100\Config\LE\CommonExtensions
  2. Extensões carregadas para a empresa DEMO
    1. C:\Program Files (x86)\PRIMAVERA\SG100\Config\LE\Extensions\DEMO
  3.  Caso as extensões (comuns ou por empresa) dependam de outras assemblys
    1. C:\Program Files (x86)\PRIMAVERA\SG100\Apl\

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?

Faça login para poder traduzir
Integração
V10
Marcado como spam
Criado há 6 anos e 5 meses heldercosta
heldercosta Iniciante
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;
6 anos e 5 meses
heldercosta
    2 respostas
    0
    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.

    Faça login para poder traduzir
    Marcado como spam
    Criado há 6 anos e 5 meses heldercosta
    heldercosta Iniciante
      1
      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.

      Faça login para poder traduzir
      Marcado como spam
      Criado há 6 anos e 5 meses sergiosereno
      sergiosereno Most Valuable Professional
        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;
        6 anos e 5 meses
        heldercosta
          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?
          6 anos e 5 meses
          heldercosta