2016-03-20 16 views
6

Diciamo che avete un progetto .NET Nucleo che assomiglia a questo:Come passare tra i quadri di riferimento per i progetti fondamentali .NET in Visual Studio

"frameworks": { 
    "net40": {}, 
    "dotnet5.1": {} 
} 

E questo è il vostro codice C#:

public class Foo 
{ 
    public static void Blah() 
    { 
#if DOTNET5_1 
     DoSomething(); 
#elif NET40 
     DoSomethingElse(); 
#endif 
    } 
} 

Ora, in Visual Studio quando si visualizza il file .cs, una delle sezioni #if verrà visualizzata in grigio - DoSomething o DoSomethingElse. Ecco come si presenta sul mio portatile:

enter image description here

E 'possibile ottenere VS a 'contesto 'interruttore' tra le piattaforme di destinazione, in modo da poter vedere quello che sarebbe stato compilato per una particolare piattaforma? Ad esempio, potrei voler verificare eventuali linee ondulate rosse per ciascun framework prima di costruire effettivamente la soluzione.

Qualsiasi aiuto sarebbe apprezzato, grazie!

+0

In una nota a margine, perché stai mirando a 'net40'? La libreria di classi non sarà compatibile con .NET Core in esecuzione su .NET Framework completo poiché la versione minima supportata è .NET 4.5.1. https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md Avrai bisogno almeno di un multitargeting 'net451' e' net40' per supportare sia, 4.0 che (ASP) .NET Core contro Full .NET Framework/Mono – Tseng

+0

@Tseng Fare riferimento al documento collegato. 'dotnet5.1' si prenderà cura di .NET 4.5, Windows 8 e della maggior parte delle altre piattaforme. 'net40' si prenderà cura di .NET 4.0. –

+0

@JamesKo Poiché molti metodi di sincronizzazione vengono rimossi a favore delle alternative asincrone (nei socket e così via), il targeting di .NET 4 sarebbe complicato. Anche .NET 4 è alla fine della vita e .NET 4.5.2 è la nuova linea di base. –

risposta

11

Nella parte superiore del tuo editor dovrebbe essere la barra di navigazione. A sinistra nella barra di navigazione c'è un menu a tendina che ti consente di selezionare il contesto.

Se la barra di navigazione è nascosta, è possibile abilitarla andando in Strumenti> Opzioni> Editor di testo> C# e spuntare la casella di controllo.

+0

Grazie mille! Penso che questo fosse il mio problema principale, non sapevo che esistesse una barra di navigazione, quindi ero confuso quando VS disse che potevo usare la "barra di navigazione per cambiare contesto". –

3

La risposta già fornita sembra quasi corretta. Vorrei solo evidenziare alcuni problemi attualmente presenti con questo.

A partire da oggi, su VS 2015 Community Ed, versione 14.0.25424.00 Update 3, global.json SDK 1.0.0-preview2-003121, la barra di navigazione mostra bersagli multipli solo se il progetto di avvio è un multi- scegli come target "eseguibile" (ad esempio l'app per console).

multi-target switcher visible

Se l'avvio è impostato su una libreria di classi multi-target, nessun interruttore bersaglio è elencato (e l'etichetta accanto alla freccia verde è diverso pure):

multi-target switcher not visible

Inoltre, quando lo switcher può essere utilizzato, sembra che le condizioni "standard" definite provided by build system non siano correttamente evidenziate nell'editor:

enter image description here

Per visualizzare correttamente i blocchi di definizione evidenziati, è necessario cambiare il commutatore di progetto , evidenziato in verde nell'ultima schermata. Sembra che bersagli diversi nello stesso progetto siano trattati come progetti diversi a questo scopo. E questo può essere modificato indipendentemente da qualsiasi file aperto nell'editor.

Problemi correlati