Я пытаюсь скомпилировать Zero29 с флагом --standalone
. Сам проект компилируется, но у меня есть проект unit test, который выполняет некоторый код в проекте Zero29, хотя это исполняемая программа (.exe).
Все работает отлично без флага --standalone
.
Однако, когда я добавляю флаг компиляции --standalone
в проект Zero29, проект Zero29 компилируется отлично, но в проекте unit test компилятор жалуется на этот Discriminated Union определенный в проекте Zero29:
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
Проект unit test напрямую ссылается на проект Zero29:
Zero29.UnitTests --references → Zero29 (где добавлен --стандарт)
Когда я пытаюсь скомпилировать все решение, проект Zero29 компилируется с флагом --standalone
, но компиляция Zero29.UnitTests не выполняется. Есть несколько ошибок, но они все одинаковы, поэтому здесь один пример:
error FS0039: значение или конструктор "Назначить" не определено
Что указывает на третью строку этого кода:
let ParseAssignVersionReturnsCorrectResult(version : string) =
let actual = [| "-a"; version |] |> Args.Parse
verify <@ [Assign(Version version)] = (actual |> Seq.toList) @>
Странно то, что, компилятор жалуется на Assign
в третьей строке этого фрагмента кода, он не жалуется на использование Args.Parse
, даже если он определенный в том же файле кода, что и Arg
Discriminated Union.
Почему он это делает и как я могу решить эту проблему?
(Я попытался устранить проблему здесь, но ссылки, которые я предоставил, указывают на фактические файлы кода на GitHub, если требуется дополнительная информация.)