有没有人有VFP to .Net Compiler的经验或了解?
我正在为一家拥有广泛VFP9应用程序的公司工作,他们正在寻找一种快速获取.Net运行应用程序的方法。我被要求查看这个编译器以查看它是否是一个可行的选项,但到目前为止我还没有能够成功编译任何东西 - 甚至我的“Hello World”世界应用程序也没有运行。
只是为了限定最后一句话:我可以让真正简单的Fox应用程序“编译”,但生成的.Net可执行文件无法成功执行。我已经拆解了源代码并将其转换为C#,但通常它包含许多错误(100 +)。
我很想放弃整个技术,但似乎有很多支持这个和Fox用户社区的兴奋。有没有人对此有任何见解?
这是VFP到.Net编译器的link
答案 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表单上使用。