2

我在 PowerBuilder.NET Hello World中创建了一个函数。该项目编译为Helloworld.dll,由 PowerBuilder 实用程序以 C# 生成。在 Helloworld 中,我制作了非可视的n_cst_helloworld。在非视觉内部,我制作了对象函数of_hello()。这些是我尝试在 SQL Anywhere 上的外部函数中访问Helloworld.n_cst_helloworld.of_hello()时遇到的问题。

外部函数使用CLR ,现在在Interactive SQL中调用。

这是我尝试在 iSQL 中启动的脚本(通过 ASA):

ALTER PROCEDURE  "DBA"."ext_helloworld"()

EXTERNAL NAME

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

LANGUAGE CLR

然后,我在 iSQL 中使用以下内容:

START EXTERNAL ENVIRONMENT CLR; 

CALL ext_helloworld();

然后给我以下错误:

无法执行语句。程序“ext_helloworld”因未找到未处理的异常“方法“Helloworld.n_cst_helloworld.of_hello”而终止。

SQLCODE = -91

所以,我知道我在正确的文件夹中有对象,并通过 REGASM 和所有这些注册,否则它会给我以前见过的“找不到对象”的错误。

我很困惑,因为似乎 SQL Anywhere 知道对象 n_cst_helloworld 存在,但它不识别使用 PowerBuilder.NET 实用程序生成的方法。我不知道如何继续能够通过 ASA 使用此方法。

目前我正在使用 ASA 12、PB12、PB.NET 并安装了 3.5 和 4.0。

4

1 回答 1

1

.NET 部署的工作原理


当您部署 .NET 项目时,PowerBuilder 将现有或新开发的 PowerScript® 代码编译成 .NET 程序集。

在运行时,生成的 .NET 程序集使用 .NET 公共语言运行时 (CLR) 执行。PowerBuilder 的 .NET 编译器技术与标准 PowerBuilder 客户端-服务器应用程序中的 P 代码编译器一样透明。

部署 PowerBuilder 运行时文件

将 PowerBuilder 运行时 DLL 和 .NET 程序集部署到生产服务器或目标计算机的最简单方法是使用PowerBuilder Runtime Packager工具。Runtime Packager 创建一个 MSI 文件,用于安装您选择的文件、注册任何自注册 DLL,并将 .NET 程序集安装到全局程序集缓存 (GAC) 中。


在 Sybase 信息中心上查看完整文档 PB.NET 运行时


部署清单

验证生产服务器和目标计算机是否满足运行从 PowerBuilder Classic 部署的 .NET 目标的所有要求。

所有 .NET 目标的清单

对于所有 .NET 目标类型(Windows 窗体、Web 窗体、.NET 程序集、.NET Web 服务)的部署,生产服务器或目标计算机必须具有:

  • Windows XP SP2、Windows Vista、Windows 2008 或 Windows 7 操作系统 .NET Framework 4.0
  • Microsoft Visual C++ 运行时库 msvcr71.dll、msvcp71.dll、msvcp100.dll、msvcr100.dll 和 Microsoft .NET 活动模板库 (ATL) 模块 atl71.dll
  • 全局程序集缓存 (GAC) 中的 PowerBuilder .NET 程序集
  • 系统路径中的 PowerBuilder 运行时动态链接库
  • 请参阅部署 PowerBuilder 运行时文件。

在 Sybase 信息中心上查看完整的部署清单文档


于 2013-08-06T17:58:29.473 回答