2015-05-18 13 views
8

EDIT: Ho modificato l'intera domanda, poiché non è solo per Unity3D, ma per tutti i progetti .sln.Utilizzo del codice di Visual Studio e utilizzo dei simboli definiti

Ho un'installazione di Visual Studio Code (Not Visual Studio, ma questo: https://code.visualstudio.com/) sul mio Macbook al lavoro. VSCode funziona altrimenti bene con i progetti normali e Unity3D. Ottengo Intellisense su tutte le classi, comprese quelle specifiche di Unity3D, come GameObject. Quindi penso che la mia installazione e la sequenza di avvio siano corrette.

Unico problema che ho, è che VSCode non sembra riconoscere le costanti definite nei file .csproj. Innanzitutto ho notato questo con alcuni plugin Unity3D, ma è persistente anche nei normali progetti di Visual Studio.

Il mio progetto di esempio è un'applicazione fittizia scaricata da Internet, ma funziona completamente su MonoDevelop. Questo è il mio codice

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace DummyConsoleApplication 
    { 
    class Program 
     { 
      static void Main(string[] args) 
      { 
       tester(); 
      } 

      #if DEBUG 
      static void tester(){ 

      } 
      #endif 
     } 
    } 

La chiamata di funzione nel Main causa un'eccezione non trovato sul l'editor, ma compila bene, dal momento che il file Csproj ha questa linea:

<DefineConstants>DEBUG;TRACE</DefineConstants> 

Qualsiasi verifica su se questo è un comportamento normale per VSCode sarebbe molto apprezzato. Inoltre, se qualcuno è a conoscenza di una soluzione, anche quella hacky, per superare questo bug e costringere Intellisense a completare automaticamente sarebbe di aiuto.

L'errore che ottengo è:

The name 'tester' does not exist in the current context [DummyConsoleApplication] 

Il mio hardware è un Macbook con Yosemite e il mio compilatore è DNX-mono.1.0.0-beta4.

+0

Potrebbe avere qualcosa a che fare con i finali di linea? Devi convertire le terminazioni di riga quando usi il codice di Visual Studio in Unity. e sì, MonoDevelop è un incubo. –

+0

Beh, è ​​qualcosa che non ho ancora fatto. Potresti indicarmi la giusta direzione su come farlo? – Quido3

+0

Penso di aver convertito le terminazioni di linea. Ho usato un programma di utilità denominato LineBreak per farlo. Non ha corretto l'errore. Se stai usando VSCode, puoi controllare il comportamento nel tuo ambiente? – Quido3

risposta

3

Questa è una limitazione nota con OmniSharp, il C# motore che codice Visual Studio è built around. C'è un open enhancement request per l'aggiunta del supporto <DefineConstants>, ma è legato a un problema più grande per quanto riguarda MSBuild Support.

Attualmente, questa non è una configurazione supportata in Codice di Visual Studio. Puoi provare a definire le tue costanti tramite lo launch.json, ma il supporto è minimo nella migliore delle ipotesi.

+0

Grazie. Buono a sapersi, non è nel mio ambiente. Potresti darmi ulteriori informazioni sulla loro definizione in lauch.json? Sarei felice se ho appena ottenuto VSCode per non dare un errore quando si chiama metodi all'interno di "#if UNITY_ANDROID" -tags. – Quido3

3

Dovrebbe funzionare ...

Come un controllo di integrità, avete:

  • "Sync MonoDevelop Progetto" di recente?
  • Assicurarsi che Visual Studio Code abbia selezionato la soluzione -csharp (.sln)? (Clicca la fiamma nella barra di stato per cambiare)
+0

Sì.Ho fatto la sincronizzazione, ho aperto la cartella del progetto contenente i file .sln e ho selezionato il progetto dalla fiamma in basso. Intellisense sta lavorando bene e dandy. Il tuo VSCode riconosce i tag definiti da Unity? – Quido3

Problemi correlati