2 votes

Fonction externe "Hello World" dans SQL Anywhere avec une DLL générée par Powerbuilder

J'ai créé une fonction dans PowerBuilder.NET Hello World. Le projet compilé en Helloworld.dll, généré en C# à partir de l'utilitaire PowerBuilder. À l'intérieur de Helloworld, j'ai créé le non-visuel n_cst_helloworld. À l'intérieur du non-visuel, j'ai créé la fonction d'objet of_hello(). Voici les problèmes que j'ai rencontrés en essayant d'accéder à Helloworld.n_cst_helloworld.of_hello() dans une fonction externe sur SQL Anywhere.

La fonction externe utilise CLR et est appelée en ce moment dans Interactive SQL.

Voici le script que j'essaie de lancer dans iSQL (via ASA) :

ALTER PROCEDURE  "DBA"."ext_helloworld"()

EXTERNAL NAME

'helloworld.dll::Helloworld.n_cst_helloworld.of_hello( )'

LANGUAGE CLR

Ensuite, j'utilise ce qui suit dans iSQL :

START EXTERNAL ENVIRONMENT CLR;

CALL ext_helloworld();

Qui me donne ensuite l'erreur suivante :

Impossible d'exécuter l'instruction. La procédure 'ext_helloworld' s'est terminée avec une exception non gérée 'La méthode 'Helloworld.n_cst_helloworld.of_hello' est introuvable.'

SQLCODE = -91

Donc, je sais que j'ai l'objet dans le bon dossier, et enregistré via REGASM et tout ça, sinon cela me donnerait l'erreur "objet introuvable" que j'avais déjà vue.

Je suis confus car il semble que SQL Anywhere sait que l'objet n_cst_helloworld existe, mais il ne reconnaît pas les méthodes générées à l'aide de l'utilitaire PowerBuilder.NET. Je ne sais pas comment procéder pour pouvoir utiliser cette méthode via ASA.

Actuellement j'utilise ASA 12, PB12, PB.NET et ai à la fois 3.5 et 4.0 installés.

1voto

DisplacedGuy Points 1679

Comment fonctionne le déploiement .NET


Lorsque vous déployez un projet .NET, PowerBuilder compile le code PowerScript® existant ou nouvellement développé en assemblies .NET.

À l'exécution, les assemblies .NET générés s'exécutent en utilisant le Common Language Runtime (CLR) de .NET. La technologie de compilation .NET de PowerBuilder est aussi transparente que le compilateur P-code dans les applications client-serveur PowerBuilder standard.

Déploiement des fichiers d'exécution PowerBuilder

La manière la plus simple de déployer les fichiers d'exécution PowerBuilder DLLs et les assemblies .NET sur les serveurs de production ou les ordinateurs cibles est d'utiliser l'outil PowerBuilder Runtime Packager. Le Runtime Packager crée un fichier MSI qui installe les fichiers que vous avez sélectionnés, enregistre les DLLs auto-enregistrantes et installe les assemblies .NET dans le Global Assembly Cache (GAC).


Voir le document complet sur les runtimes PB.NET ICI sur Sybase Infocenter


Checklist pour le déploiement

Vérifiez que les serveurs de production et les ordinateurs cibles répondent à toutes les exigences pour exécuter les cibles .NET que vous déployez à partir de PowerBuilder Classic.

Checklist pour toutes les cibles .NET

Pour le déploiement de tous les types de cibles .NET (Windows Forms, Web Forms, Assemblée .NET, service Web .NET), les serveurs de production ou les ordinateurs cibles doivent avoir :

  • Le système d'exploitation Windows XP SP2, Windows Vista, Windows 2008 ou Windows 7 .NET Framework 4.0
  • Les bibliothèques d'exécution Microsoft Visual C++ msvcr71.dll, msvcp71.dll, msvcp100.dll, msvcr100.dll, et le module Microsoft .NET Active Template Library (ATL), atl71.dll
  • Les assemblies PowerBuilder .NET dans le Global Assembly Cache (GAC)
  • Les bibliothèques dynamiques d'exécution PowerBuilder dans le chemin système
  • Voir Déploiement des fichiers d'exécution PowerBuilder.

Voir le ensemble complet de documents de checklist de déploiement ICI sur Sybase Infocenter


Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X