我看不到如何从dafny程序中获取C#程序。
我已经在Visual Studio Code中下载了dafny,还下载了C#。我在dafny中有一个程序,可以右键单击该程序,然后选择“编译并运行”,但是我想生成一个C#程序,如本视频(8:46)中所示:https://www.youtube.com/watch?v=99TjfvyP1z0。>
if
答案 0 :(得分:1)
在内部,Dafny的.NET编译器生成C#代码,然后调用C#编译器将其转换为可执行的.NET程序(或.dll)。您要求Dafny输出此C#程序。使用命令行开关/spillTargetCode:1
完成。在生成的C#程序顶部的注释中,您将看到哪些命令行开关传递给C#编译器以直接编译该C#程序。
如果您只想运行Dafny程序,则无需查看C#代码。只需使用/compile:1
(默认设置)调用Dafny,然后运行生成的.exe文件,或者使用/compile:3
调用Dafny来验证,编译和运行程序。
我已经描述了这些选项,就好像您是从命令行运行Dafny一样。还可以通过其他方式在VS Code的“ Dafny设置”中添加这些命令行开关。
如果要连接Dafny其他C#代码,则可以在Dafny方法和其他Dafny声明上使用{:extern}
属性。如果这样做,那么在调用Dafny时只需在命令行上添加自己的.cs文件即可。例如,在Dafny测试套件的文件中搜索“ extern
”。
Dafny的最新功能(Dafny的二进制发行版中尚无此功能,但是如果您自己从源代码构建Dafny,则可以立即获得)是JavaScript和Go的编译器。通过命令行开关/compileTarget
选择这些编译器。
Rustan