有帮助吗?

解决方案

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

这实际上是.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表单)。如果有人想要更多细节,我会很乐意扩展这个。

其他提示

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/

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top