2010-02-24 18 views
21

Devo impostare un numero di versione da utilizzare nell'attributo AssemblyVersion di diversi progetti correlati.Costanti globali in F # - come

In C# Io uso il seguente

public class Constants { 
    public const string Version = "1.2.3.4"; 
} 

allora può essere utilizzato come segue:

[assembly:AssemblyVersion(Constants.Version)] 

Quale sarebbe il costrutto equivalente in F #. Tutti i miei tentativi di inventare un'associazione che può essere accettata come argomento attributo non ha funzionato.

risposta

34

Utilizzare l'attributo Literal:

[<Literal>] 
let version = "1.2.3.4" 

[<assembly:AssemblyVersion(version)>] 
8

Da quando ho fatto un passo in questa trappola io ho pensato di condividere per chi segue. Un 'Letterale' richiede che la lettera inizi con una lettera maiuscola. Questo ti colpirà quando tenti di usare il letterale in un costrutto di pattern matching.

Riferimento: Literal attribute not working

+0

Questo è vero solo se si desidera utilizzare il letterale in un contesto di pattern matching. – kvb

+0

La corrispondenza del modello è piuttosto centrale per F #, comunque. Non funziona nella corrispondenza dei modelli rende molto meno utile. –

+3

Questa risposta sarebbe meglio come commento alla risposta accettata. – CaringDev