我们的第三个迁移示例是披萨示例。您可以在 VO 安装中的 Samples\Controls\Buttons 文件夹中找到它。
我选择了相同的输出文件夹(C:\XporterOutput\Examples\),XPorter 将在 Examples 文件夹中用 AEF 和 Pizza 解决方案的内容创建一个 Pizza 子文件夹。
没有必要再次列出文件。
在 visual Studio 中打开 Pizza.sln 并编译后,你会发现以下问题:
问题是:
•原始 VO 程序的输出名称为 “PIZZA.EXE”。
•X# 编译器使用与 Vulcan 编译器相同的逻辑,并创建了一个名为 Pizza.Exe.Functions 的静态类,该类将保存应用程序中的函数、全局和(X# 的新功能)定义。
•应用程序中还有一个名为 “PIZZA ”的图像。
•当我们编译这个应用程序时,名为 PIZZA 的类和命名空间 Pizza(来自类 Pizza.Exe.Functions)之间出现了冲突。
•这是 DotNet 标准所不推荐的。Vulcan 则忽略了这一点,允许使用类 Pizza 和命名空间 Pizza。X# 更严格地遵循了 .Net 准则。
•这个问题有两种解决方案:
o重命名图像类 Pizza(在 Images.prg 中)
o重命名输出文件名。要重命名输出文件名,请打开项目设置(从项目菜单),在 “常规 ”页面设置程序集名称。你可以将程序集重命名为 PizzaApp,这样就可以解决问题了
•在这种情况下,我选择重命名 PIZZA 图像。因此,打开 Images.PRG,重命名为
CLASS PIZZA INHERIT Bitmap
to
CLASS ImgPIZZA INHERIT Bitmap
•Then recompile again. Now one problem is left:
C:\XporterOutput\Examples\Pizza\Order Dialog.prg(165,25): error XS0246: The type or namespace name 'PIZZA' could not be found (are you missing a using directive or an assembly reference?)
•在示例应用程序中,必胜客图片就用在这里。若要更改,请打开订单对话窗口(Order Dialog.ORDERDIALOG.xsfrm)。选择左下角的按钮,将属性窗口中的 “图像 ”文本从 Pizza 更改为 ImgPizza。保存表单。代码也将重新生成。
•如果您查看修改后的订单对话框 rc 文件,就会发现该文件已标注了此代码生成的页眉。此外,还为表单中使用的所有窗口样式添加了 #defines。该资源是 “自包含 ”的,因此在资源文件中不依赖任何外部文件。
•重新编译,程序即可编译完成。
•当我们运行该程序时,会发现它的运行与预期一致:
您可以在 XSharp 示例文件夹中找到 “Code before ”和 “Code after”。