2015-05-18 14 views
8

EDYCJA: Edytowałem całe pytanie, ponieważ dotyczy to nie tylko Unity3D, ale wszystkich projektów .sln.Używanie kodu Visual Studio i używanie zdefiniowanych symboli

Mam instalację kodu Visual Studio (nie Visual Studio, ale to: https://code.visualstudio.com/) na moim Macbook w pracy. VSCode w przeciwnym razie działa poprawnie w normalnych projektach Unity3D. Dostaję Intellisense na wszystkich klasach, w tym specyficznych dla Unity3D, takich jak GameObject. Myślę, że moja sekwencja instalacji i uruchamiania jest poprawna.

Jedyny problem jaki mam, to to, że VSCode nie rozpoznaje stałych zdefiniowanych w plikach .csproj. Najpierw zauważyłem to z niektórymi wtyczkami Unity3D, ale jest ono trwałe również w normalnych projektach Visual Studio.

Mój przykładowy projekt to fikcyjna aplikacja pobrana z Internetu, ale działa w pełni na MonoDevelop. To jest mój kod

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 
     } 
    } 

Wywołanie funkcji w Main powoduje nie znaleziono wyjątek w edytorze, ale kompiluje grzywny, ponieważ plik .csproj ma ten wiersz:

<DefineConstants>DEBUG;TRACE</DefineConstants> 

żadnej weryfikacji, czy na jest to normalne zachowanie dla VSCode byłoby bardzo mile widziane. Ponadto, jeśli ktoś jest świadomy jakiegoś rozwiązania, nawet hacky, aby ominąć ten błąd i zmusić Intellisense do autouzupełniania, też by mu pomógł.

Błąd pojawia się:

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

Mój sprzęt jest Macbook z Yosemite i mój kompilator jest DNX-mono.1.0.0-beta4.

+0

Czy to może mieć coś wspólnego z zakończeniami linii? Musisz konwertować zakończenia linii, gdy używasz kodu Visual Studio w Unity. i tak, MonoDevelop to koszmar. –

+0

Cóż, to jest coś, czego jeszcze nie zrobiłem. Czy możesz wskazać mi właściwy kierunek, w jaki sposób to zrobić? – Quido3

+0

Myślę, że konwertowałem końcówki linii. Użyłem narzędzia o nazwie LineBreak, aby to zrobić. Nie naprawiłem błędu. Jeśli używasz VSCode, czy możesz sprawdzić zachowanie w swoim środowisku? – Quido3

Odpowiedz

3

Jest to znane ograniczenie z OmniSharp, silnikiem C#, którego kod Visual Studio to built around. Istnieje open enhancement request w celu dodania obsługi <DefineConstants>, ale wiąże się to z większym problemem dotyczącym MSBuild Support.

Obecnie nie jest to obsługiwana konfiguracja w ramach kodu Visual Studio. Możesz spróbować zdefiniować swoje stałe za pomocą launch.json, ale wsparcie w najlepszym razie jest minimalne.

+0

Dzięki. Dobrze wiedzieć, że nie jest to w moim środowisku. Czy możesz podać mi więcej informacji na temat definiowania ich w lauch.json? Byłbym szczęśliwy, gdybym właśnie dostał VSCode, aby nie podawał błędu podczas wywoływania metod wewnątrz "#if UNITY_ANDROID" -tagi. – Quido3

3

Powinien działać ...

Jako kontrola poprawności, masz:

  • "Sync MonoDevelop Project" niedawno?
  • Upewnij się, że kod Visual Studio Code ma wybrane rozwiązanie -csharp (.sln)? (Kliknij płomień na pasku stanu, aby zmienić)
+0

Tak.Zrobiłem synchronizację, otworzyłem folder projektu zawierający pliki .sln i wybrałem projekt z płomienia na dole. Intellisense działa dobrze i dandy. Czy twój VSCode rozpoznaje te znaczniki zdefiniowane przez Unity? – Quido3

Powiązane problemy