| ♥ 0 | Estamos a trabalhar na migração de uma BD com código VBA Entre outros existe um módulo com um conjunto de funções que são partilhadas pelo restante código. Estas funções partilhadas usam elas próprias métodos e propriedades disponibilizadas pela extensibilidade Primavera. Para efeitos de teste foi criada uma DLL de teste (TesteDLL.DLL) com uma classe e um método simples. Public Class ClassTesteDll
Public Function AddNumbers(num1 As Int16, num2 As Int16) As Int16
AddNumbers = num1 + num2
End Function
End Class
Numa aplicação de teste construída funciona corretamente desde que o “Copy Local” esteja a “true”. Num projeto de extensibilidade Primavera importa-se essa mesma DLL e tenta-se usar o método. Imports TesteDll
Public Class UiEditorVendas
Inherits EditorVendas
Public Overrides Sub AntesDeGravar(ByRef Cancel As Boolean, e As ExtensibilityEventArgs)
MyBase.AntesDeGravar(Cancel, e)
Dim Y As New TesteDll.ClassTesteDll
Try
Select Case Me.DocumentoVenda.Tipodoc
Case "FA", "NCT", "FP"
If Me.DocumentoVenda.TotalIva = 0 Then Throw New Exception("O IVA não pode ser 0") ' Err.Raise 5555, , "O IVA não pode ser 0"
End Select
Catch ex As Exception
Cancel = True
MsgBox(Y.AddNumbers(10, 25))
PSO.Dialogos.MostraMensagem(StdBSTipos.TipoMsg.PRI_Detalhe, ex.Message, StdBSTipos.IconId.PRI_Exclama)
End Try
End Sub
End ClassO resultado é um erro indicando que “Não é possível carregar o ficheiro ou assemblagem. Ficheiro não existe” Foram feitas tentativas com Copia Local em true/false e registando / não registando a TesteDLL no ERP. Tentou-se também que a TesteDLL fosse ela própria um projeto de extensibilidade Primavera. Nenhuma tentativa funcionou. Como implementar esta solução: Ter uma DLL com funções/métodos que possam ser partilhadas por outros componentes de um projeto de extensibilidade Primavera? Sendo que esta DLL tem também que ter acesso a componentes da extensibilidade Primavera? Marcado como spam |
| Resposta privada Esta já é uma duvida colocada aqui no forum diversas vezes,e a resposta é simples. A DLL não é carregada porque não está registada em lado nenhum, ao contrario de que acontecia com as DLL com usadas na V9. Assim a solução passa por:
Existe aqui um artigo no developer network que indica como fazer ou este video: Deployment de Extensões com Dependencias Marcado como spam Comentários Obrigado, @sereno !
É dificil ser original hoje em dia, mesmo com os problemas :)
Vou tentar resolver a questão com as indicações que me deixa. |