我需要向Dafny函数提供数据并得到它们的输出。为此,我试图创建一个调用Dafny函数的C#程序。
作为一个测试,我创建了一个非常简单的Dafny文件:
module myDafnyModule {
method boolMethod(b: bool) returns (r:bool) {
return !b;
}
function method boolFunctionMethod(b:bool):bool {
!b
}
}我的主要猜测是,我应该把它作为一个多文件.NET组件来处理。为此,我应该
dafny /spillTargetCode:1 dafnyModule.dfycsc /target:module dafnyModule.cs的内容将其编译为一个模块csc Main.cs /addmodule:dafnyModule.netmodule程序。第一步有效。但是,步骤2中的csc调用失败了,出现了许多错误,如
$ csc dafnyModule.cs
Microsoft (R) Visual C# Compiler version 3.6.0-4.20224.5 (ec77c100)
Copyright (C) Microsoft Corporation. All rights reserved.
dafnyModule.cs(50,28): error CS0234: The type or namespace name 'Immutable' does not exist in the namespace 'System.Collections' (are you missing an assembly reference?)
dafnyModule.cs(1718,40): error CS0246: The type or namespace name 'BigInteger' could not be found (are you missing a using directive or an assembly reference?)
...我的问题是:
csc调用中缺少什么来编译Dafny生成的C#代码?为了完整起见,我在macOS 11.3.1上使用了Dafny3.1,DotNet5.0.104,csc,mono6.12.0.90。
发布于 2021-05-29 10:19:51
我意识到,达夫尼生成的C#代码从几行代码开始,这些行似乎暗示要使用dotnet来编译,而不是使用csc (因为dafny /help提到了csc)。
沿着这条线,我找到了dotnet。
它起了作用,只需将生成的C#代码放在库的预期位置和应该在哪里的主要应用程序中即可。
dotnet的整个解决方案和项目听起来有些令人望而生畏,给Windows上的Visual带来了痛苦的闪回,但它是非常简单的。
https://stackoverflow.com/questions/67740506
复制相似问题