La compilación con un indicador independiente proporciona errores de compilación en el código del cliente
Estoy intentando compilarZero29 con el--standalone
bandera del compilador El proyecto en sí se compila bien, pero tengo un proyecto de prueba unitaria que ejercita algo de código en el proyecto Zero29, aunque es un programa ejecutable (.exe).
Todo funciona biensin el--standalone
bandera de compilación
Sin embargo, cuando agrego el--standalone
indicador de compilación para el proyecto Zero29, el proyecto Zero29 se compila bien, pero en el proyecto de prueba de la unidad, el compilador se queja de esta Unión Discriminadadefinido en el proyecto 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
El proyecto de prueba de la unidad hace referencia directa al proyecto Zero29:
Zero29.UnitTests --references -> Zero29 (donde se agrega --standalone)
Cuando intento compilar la solución completa, el proyecto Zero29 se compila con el--standalone
flag, pero luego la compilación de Zero29.UnitTests falla. Hay varios errores, pero todos son iguales, así que aquí hay un solo ejemplo:
error FS0039: el valor o el constructor 'Asignar' no está definido
Que apunta a la tercera línea deeste codigo:
let ParseAssignVersionReturnsCorrectResult(version : string) =
let actual = [| "-a"; version |] |> Args.Parse
verify <@ [Assign(Version version)] = (actual |> Seq.toList) @>
Lo extraño es que mientras el compilador se queja deAssign
en la tercera línea de este fragmento de código, seno lo hace quejarse sobre el uso deArgs.Parse
, aunque seadefinido en el mismo archivo de código que elArg
Unión discriminada.
¿Por qué hace eso y cómo puedo resolver este problema?
(He intentado resolver el problema aquí, pero los enlaces que he proporcionado apuntan a los archivos de código reales en GitHub, si se requiere más información).