VFP到.Net编译器

时间:2009-09-11 09:49:45

标签: .net foxpro visual-foxpro

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

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

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

我很想放弃整个技术,但似乎有很多支持这个和Fox用户社区的兴奋。有没有人对此有任何见解?

这是VFP到.Net编译器的link

3 个答案:

答案 0 :(得分:4)

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

这实际上是.Net的编译器,与COM Interop或Web Services无关。整个过程都是围绕SharpDevelop构建的,它随编译器一起提供。有效地,您可以启动SharpDevelop并输入FoxPro PRG。 intellisense中有完整的,并且大多数(如果不是全部)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表单)。如果有人想要更多细节,我会很乐意扩展这个。

答案 1 :(得分: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 Interop,方法和属性将在.Net中提供。您的函数几乎可以在VFP,查询,自动化等中执行任何操作。您只需执行XMLAdapter即可生成XML字符串,以将单个或多个游标集作为一个大块返回,或者通过多次调用单独返回不同的方法。

祝你好运。

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

答案 2 :(得分:0)

VFP Developer Studio for .Net中的表格的一些额外信息:eTecnologia宣布,在SharpDevelop中设计为VFP表单的表单可以选择编译为SVG,除了IE之外,它可以在除IE之外的每个浏览器上运行,尽管有一个Google插件用于将SVG转换为SWF的IE。他们之前也曾致力于为SharpDevelop中设计的VFP表单输出XAML。此外,.Net控件,COM控件以及我们被告知Java控件,都可以在开发人员工作室附带的自定义#D中设计的VFP表单上使用。