Mar*_*ann 13 f# compiler-errors
我试图编译Zero29与--standalone编译器标志.项目本身编译得很好,但我有一个单元测试项目,在Zero29项目中运行一些代码,即使它是一个可执行程序(.exe).
一切工作正常,而不在--standalone编译标志.
但是,当我将--standalone编译标志添加到Zero29项目时,Zero29项目编译得很好,但是在单元测试项目中,编译器抱怨Zero29项目中定义的这个Discriminated Union :
namespace Ploeh.ZeroToNine
open System
open Ploeh.ZeroToNine.Versioning
type Arg =
| Assign of Version
| AssignRank of Rank * int
| Increment of Rank
| ListVersions
| ShowHelp
| Unknown of string list
Run Code Online (Sandbox Code Playgroud)
单元测试项目直接引用Zero29项目:
Zero29.UnitTests --references - > Zero29(其中--standalone被添加)
当我尝试编译整个解决方案时,Zero29项目将使用该--standalone标志进行编译,但随后编译Zero29.UnitTests失败.有几个错误,但它们都是一样的,所以这里有一个例子:
错误FS0039:未定义值或构造函数"Assign"
哪个指向此代码的第三行:
let ParseAssignVersionReturnsCorrectResult(version : string) =
let actual = [| "-a"; version |] |> Args.Parse
verify <@ [Assign(Version version)] = (actual |> Seq.toList) @>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,虽然编译器Assign在这个代码片段的第三行抱怨,但它并没有抱怨使用Args.Parse,即使它在与ArgDiscriminated Union 相同的代码文件中定义.
为什么会这样做,我该如何解决这个问题?
(我试图在这里解决问题,但是我提供的链接指向GitHub上的实际代码文件,如果需要更多信息.)