【问题标题】:VFP to .Net CompilerVFP 到 .Net 编译器
【发布时间】:2009-09-11 09:49:45
【问题描述】:

有没有人对VFP to .Net Compiler有经验或了解?

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

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

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

这是一个link 到 VFP 到 .Net 编译器

【问题讨论】:

  • 另一个选项是 Guineu - guineu.foxpert.com - 'Guineu 是在任何 Microsoft .NET 兼容平台上运行的 Microsoft Visual FoxPro 9.0 的替代运行时库' ...

标签: .net foxpro visual-foxpro


【解决方案1】:

我现在有一些使用 VFP 到 .Net 编译器的经验,您可以找到 here

这实际上是 .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 表单)。如果有人想了解更多细节,我很乐意对此进行扩展。

【讨论】:

    【解决方案2】:

    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/

    【讨论】:

    • 上面链接中的产品声称可以做到这一点:它需要一个 VFP 应用程序并将其“编译”成一个 .Net 应用程序。另一面出现的是 .Net exe,它与您的 VFP 应用程序相同。无论如何,这就是索赔!查看链接:etecnologia.net/products/vfpcompiler/VFPCompiler-index.htm
    • 实际上有两个 VFP 到 .NET 编译器。据我所知,它们并没有得到微软的正式认可,但有 eTechnologia 和 Foxite 的一个。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      相关资源
      最近更新 更多