Compilar com sinalizador autônomo fornece erros de compilação no código do cliente
Estou tentando compilarZero29 com o--standalone
sinalizador do compilador. O projeto em si compila bem, mas eu tenho um projeto de teste de unidade que exercita algum código no projeto Zero29, mesmo que seja um programa executável (.exe).
Tudo funciona bemsem a--standalone
bandeira de compilação.
No entanto, quando adiciono o--standalone
sinalizador de compilação para o projeto Zero29, o projeto Zero29 compila bem, mas no projeto de teste de unidade, o compilador reclama dessa União Discriminadadefinido no projeto 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
O projeto de teste de unidade faz referência direta ao projeto Zero29:
Zero29.UnitTests --references -> Zero29 (onde --standalone é adicionado)
Quando tento compilar a solução inteira, o projeto Zero29 compila com o--standalone
flag, mas a compilação de Zero29.UnitTests falha. Existem vários erros, mas são todos iguais, então aqui está um exemplo:
erro FS0039: O valor ou construtor 'Assign' não está definido
Que aponta para a terceira linha deesse código:
let ParseAssignVersionReturnsCorrectResult(version : string) =
let actual = [| "-a"; version |] |> Args.Parse
verify <@ [Assign(Version version)] = (actual |> Seq.toList) @>
O estranho é que enquanto o compilador reclamaAssign
na terceira linha deste trecho de código,não reclamar sobre o uso deArgs.Parse
, mesmo que sejadefinido no mesmo arquivo de código que oArg
União Discriminada.
Por que isso acontece e como posso resolver esse problema?
(Tentei destilar o problema aqui, mas os links que forneci apontam para os arquivos de código reais no GitHub, se mais informações forem necessárias.)