1

有没有人有经验或了解VFP 到 .Net 编译器

我在一家拥有大量 VFP9 应用程序的公司工作,他们正在寻找一种让应用程序在 .Net 中运行的快速方法。我被要求检查这个编译器,看看它是否是一个可行的选择,但到目前为止,我还不能让它成功编译任何东西——甚至我的“Hello World”世界应用程序也没有运行。

只是为了限定最后一句话:我可以让非常简单的 Fox 应用程序“编译”,但生成的 .Net 可执行文件无法成功执行。我已经反汇编了源代码并将其转换为 C#,但通常它包含许多错误 (100+)。

我很想立即否定整个技术,但是 Fox 用户社区似乎对此有很多支持和兴奋。有没有人对此有任何见解?

这是VFP 到 .Net 编译器的链接

4

3 回答 3

4

我现在有一些使用 VFP 到 .Net 编译器的经验,你可以在这里找到。

这实际上是 .Net 的编译器,与 COM Interop 或 Web 服务无关。整个事情是围绕编译器附带的 SharpDevelop 构建的。实际上,您可以启动 SharpDevelop 并输入 FoxPro PRG。智能感知功能齐全,支持大多数(如果不是全部)Fox 命令和功能。当你点击编译时,另一边出现的是一个完整的 .Net 程序集。

如果您运行程序集,则看不到 VFP 实例和 COM 互操作。它是如何工作的?它背后的人创建了映射到 Fox 函数的 .Net 函数,因此例如,如果您调用 StrToFile() 这是实际运行的代码(由 Reflector 的奇迹带给您):

public static void StrToFile(string cExpression, string cFileName)
{
    if (File.Exists(cFileName))
    {
        File.Delete(cFileName);
    }
    FileStream stream = new FileStream(cFileName, FileMode.CreateNew, FileAccess.ReadWrite);
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(cExpression);
    writer.Flush();
    writer.Close();
    stream.Close();
}

这意味着如果您在 Fox 中的工作效率很高,但您需要 .Net 解决方案,您可以在 Fox 中编码并生成 .Net 程序集。

但是,我建议您谨慎行事,因为并非所有内容都像上面的 StrToFile 示例那样实现得很好。它为 Fox 表单之类的东西建模的方式非常糟糕,尽管它确实有效(您可以使用现有的 Fox 表单并将其添加到 SharpDevelop,它会将其转换为 .Net 表单)。如果有人想要更多细节,我很乐意对此进行扩展。

于 2009-09-15T07:36:40.373 回答
0

VFP 不会直接“编译”为 .Net 产品。但是,您可以通过 COM 访问它并将项目创建为单线程或多线程 DLL。

define class MyVFPForDotNet as custom OLEPUBLIC
  cSomeProperty = ""
  nOtherProperty = ""

  Function Init()
     cSomeProperty = curdir()

  endfunc

  Function SendBackAMessage()
     return "Hello World"
  endfunc

  function CallWithParms( cParm1 as String, nParm2 as Integer, dSomeDate as DateTime )
     .. do whatever

     return "whatever"
  endfunc

enddefine

然后您可以将其添加为 COM 互操作,并且方法和属性将在 .Net 中可用。您的函数几乎可以在 VFP、查询、自动化等中执行任何操作。您可以简单地执行 XMLAdapter 来生成 XML 字符串,以将单个或多个游标集作为一大块返回,或者通过对不同方法的多次调用单独返回。

祝你好运。

顺便说一句...有两个即将举行的研讨会正在为正在考虑通过 .net 进行转换/访问的 VFP 开发人员提供。一个在http://www.oakleafsd.com/,另一个在http://www.eps-software.com/

于 2009-09-11T13:15:38.357 回答
0

有关 .Net 的 VFP Developer Studio 中表单的一些附加信息:eTecnologia 宣布,在 SharpDevelop 中设计为 VFP 表单的表单可以选择编译为 SVG,它可以在除 IE 之外的所有浏览器上运行,尽管有一个适用于 IE 的 Google 插件将 SVG 转换为 SWF。他们之前还承诺为在 SharpDevelop 中设计的 VFP 表单输出 XAML。此外,.Net 控件、COM 控件以及我们被告知的 Java 控件都将能够用于在 Developer Studio 附带的自定义#D 中设计的 VFP 表单。

于 2009-11-06T05:30:42.393 回答