C# 4.0 e .Net 3.5

Così abbiamo finalmente ottenuto VS2010 su alcuni sviluppatori di stazioni di lavoro e può utilizzare il C# 4.0 caratteristiche. Anche se la maggior parte di ciò che sviluppiamo avrà ancora a bersaglio .Net 3.5 per il momento.

Quando inizio un nuovo progetto e impostare il target .Net 3.5, che ancora mi permette di usare C# 4.0 come dinamica. Si può quindi utilizzare C#4.0 caratteristiche, mentre rivolti .net 3.5 e queste funzioni lavorano in ambienti dove .Net 4.0 non è disponibile?

Grazie.

  • Ya, questo è strano. Ho notato che sulla nostra app e la nostra è 2.0. Sarei interessato a ciò che le risposte sarebbero.
InformationsquelleAutor Darren Young | 2011-06-02



One Reply
  1. 44

    dynamic codice non compilare se si target il .NET framework 3.5.

    Di essere più chiaro, il compilatore vi permetterà di definire e assegnare un dynamic variabile, ad esempio:

    dynamic x = 3;

    Che una riga di codice, compilare, perché dynamic appena compila object quanto riguarda i tipi di sono interessati. Ma se si tenta di fare niente con quello variabile, come in:

    Console.WriteLine(x);

    … quindi il compilatore dovrebbe generare il codice per scoprire/costringere il tipo reale, che non può fare; si ottengono i seguenti errori di compilazione:

    1. Tipo predefinito di Microsoft.CSharp.RuntimeBinder.Binder’ non è definito o importati
    2. Uno o più tipi di richieste per la compilazione di una dinamica di espressione non può essere trovato. Ti mancano i riferimenti a Microsoft.CSharp.dll e System.Core.dll?

    C# 4 compilatore si basa su DLR e in particolare Microsoft.CSharp assemblea per tutto ciò che riguarda dynamic. Questi non sono disponibili .NET 3.5. Quindi la risposta è no, non è possibile utilizzare dynamic quando il targeting Framework versione 3.5.

    • Mi sono spesso chiesto quale sia stata la differenza. Grazie Aaronaught
    • La lettura che errore mi domando, quindi, cosa succede se è incluso il 2 dll come copia locale, che sarebbe sufficiente? O vorresti mai trovare tali dll per la raccolta di GAC versione del precedente quadro di sempre?
    • Microsoft.CSharp, che in realtà non contiene DLR; il DLR è parte del quadro stesso. Quindi no, tra cui quella DLL non è; anche se ti prende per la compilazione, non è stato effettivamente eseguito.
    • +1 Altra soluzione se hai cercato su google il 2 messaggi di errore che Aaronaught liste, è semplicemente di aggiungere un Riferimento a Microsoft.CSharp 4.0
    • perché VB.net su .NET 3.5 permettono di scrivere codice dinamico?
    • Jeremy – non è possibile fare riferimento a Microsoft.CSharp 4.0 .NET 3.5 non credo?

Lascia un commento