Компиляция с автономным флагом дает ошибки компиляции в клиентском коде
Я пытаюсь скомпилироватьZero29 с--standalone
флаг компилятора. Сам проект компилируется нормально, но у меня есть проект модульного теста, который выполняет некоторый код в проекте Zero29, даже если это исполняемая программа (.exe).
Все отлично работаетбез --standalone
флаг компиляции.
Тем не менее, когда я добавляю--standalone
флаг компиляции для проекта Zero29, проект Zero29 компилируется нормально, но в проекте модульного тестирования компилятор жалуется на этот дискриминированный союзопределено в проекте 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
Проект модульного тестирования напрямую ссылается на проект 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) @>
Странно то, что пока компилятор жалуется наAssign
в третьей строке этого фрагмента кода, этоне пожаловаться на использованиеArgs.Parse
хотя этоопределяется в том же файле кода, что иArg
Дискриминационный Союз.
Почему это происходит, и как я могу решить эту проблему?
(Я попытался разобраться в проблеме здесь, но предоставленные мной ссылки указывают на фактические файлы кода на GitHub, если требуется дополнительная информация.)