Freigeben über


Problembehandlung und bekannte Probleme (Visual Studio-Tools für Unity)

In diesem Abschnitt finden Sie Lösungen für häufige Probleme mit Visual Studio-Tools für Unity und Beschreibungen bekannter Probleme. Außerdem erfahren Sie, wie Sie Visual Studio-Tools für Unity verbessern können, indem Sie Fehler melden.

Problembehandlung bei der Verbindung zwischen Unity und Visual Studio

Bestätigen, dass Editor Attaching aktiviert oder Code Optimization On Startup auf Debug festgelegt ist

Wählen Sie im Unity-Menü die Option Edit / Preferences aus.

Abhängig von der verwendeten Unity-Version:

  • Vergewissern Sie sich, dass Code Optimization On Startup auf Debug festgelegt ist.
  • Alternativ können Sie die Registerkarte External Tools auswählen. Stellen Sie sicher, dass das Kontrollkästchen Editor Attaching aktiviert ist.

Weitere Informationen finden Sie in der Dokumentation zu Unity-Einstellungen.

Anfügen nicht möglich.

  • Versuchen Sie, Ihr Antivirenprogramm kurzzeitig zu deaktivieren, oder erstellen Sie Ausschlussregeln für Visual Studio und Unity.
  • Versuchen Sie, Ihre Firewall kurzzeitig zu deaktivieren, oder erstellen Sie Regeln, um das TCP/UDP-Netzwerken zwischen Visual Studio und Unity zuzulassen.
  • Einige Programme wie Team Viewer können die Prozesserkennung beeinträchtigen. Sie können versuchen, zusätzliche Software vorübergehend zu beenden, um festzustellen, ob sich dadurch etwas ändert.
  • Benennen Sie die wichtigste ausführbare Komponente nicht um, da VSTU nur „Unity.exe“-Vorgänge überwacht.

Visual Studio stürzt ab

Dies kann daran liegen, dass der MEF-Cache für Visual Studio beschädigt ist.

Versuchen Sie, den folgenden Ordner zu entfernen, um den MEF-Cache zurückzusetzen (bitte schließen Sie vorher Visual Studio):

%localappdata%\Microsoft\VisualStudio\<version>\ComponentModelCache

Dadurch sollte das Problem behoben werden. Wenn Sie immer noch auf Probleme stoßen sollten, führen Sie eine Developer-Eingabeaufforderung für Visual Studio als Administrator aus, und verwenden Sie den folgenden Befehl:

 devenv /setup

Visual Studio reagiert nicht mehr

Mehrere Unity-Plug-Ins wie Parse, FMOD, UMP (Universal Media Player), ZFBrowser oder Embedded Browser verwenden native Threads. Wenn ein Plug-In der Runtime einen nativen Thread hinzufügt, führt dies zu einem Problem, da die Runtime dann Blockierungsaufrufe an das Betriebssystem ausgibt. Das bedeutet, dass Unity den Thread für den Debugger (oder das Neuladen einer Domäne) nicht unterbrechen kann und nicht mehr reagiert.

Für FMOD gibt es eine Möglichkeit zur Problemumgehung: Sie können das Initialisierungs-FlagFMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE weitergeben, um die asynchrone Verarbeitung zu deaktivieren und die gesamte Verarbeitung auf dem Hauptthread durchzuführen.

Wenn Sie ein eigenes natives Plug-In entwickeln, empfehlen wir die Verwendung von asynchronen Prozeduraufrufen (APC) und speziell die Funktionen SleepEx, SignalObjectAndWait, MsgWaitForMultipleObjectsEx, WaitForMultipleObjectsEx oder WaitForSingleObjectEx für die ordnungsgemäße Zusammenarbeit mit Unity und Mono, wenn der Debugger Threads anhalten muss.

Nicht kompatibles Projekt in Visual Studio

Es ist wichtig zu wissen, dass Visual Studio den Status „Inkompatibel“ in den Projekteinstellungen speichert und erst dann versucht, ein Projekt neu zu laden, wenn Sie ausdrücklich Reload Project verwenden. Öffnen Sie deshalb nach jedem Problembehandlungsschritt erneut die Projektmappe, klicken Sie mit der rechten Maustaste auf alle inkompatiblen Projekte, und wählen Sie Reload Project aus.

  1. Überprüfen Sie mithilfe von Edit / Preferences / External Tools, ob Visual Studio als externer Skript-Editor in Unity festgelegt ist.
  2. Abhängig von Ihrer Unity-Version:
    • Überprüfen Sie, ob das Visual Studio-Plug-In in Unity installiert ist. Über Help / About sollte im unteren Bereich eine Meldung wie „Microsoft Visual Studio-Tools für Unity aktiviert“ angezeigt werden.
    • Unity 2020.x+: Stellen Sie sicher, dass Sie in Window / Package Manager das neueste Visual Studio Editor-Paket verwenden.
  3. Versuchen Sie, alle Projekte/Projektmappendateien und den Ordner .vs in Ihrem Projekt zu löschen.
  4. Versuchen Sie, Projekte/Projektmappen mit Open C# Project oder Edit / Preferences / External tools / Regenerate Project filesneu zu erstellen.
  5. Stellen Sie sicher, dass Sie die Game/Unity-Workload in Visual Studio installiert haben.
  6. Versuchen Sie, den MEF-Cache wie hier beschrieben zu bereinigen.
  7. Versuchen Sie, Visual Studio erneut zu installieren (verwenden Sie die Game/Unity-Workload nur zum Starten).
  8. Versuchen Sie, Erweiterungen von Drittanbietern zu deaktivieren, falls sie die Unity-Erweiterung in Tools / Extensionsbeeinträchtigen könnten.

Zusätzliches Neuladen oder Visual Studio verliert alle geöffneten Fenster

Stellen Sie sicher, dass Sie Projektdateien nie direkt über Asset Processor oder ein anderes Tool direkt bearbeiten. Wenn Sie die Projektdatei wirklich bearbeiten müssen, verwenden Sie die hierfür verfügbare API. Lesen Sie den Abschnitt zu Problemen mit Assemblyverweisen.

Wenn zusätzliches Neuladen auftritt oder Visual Studio alle geöffneten Fenster beim Neuladen verliert, stellen Sie sicher, dass die richtigen .NET-Pakete zur Festlegung von Zielversionen installiert sind. Weitere Informationen zu Frameworks finden Sie in folgendem Abschnitt.

Der Debugger wird bei Ausnahmen nicht unterbrochen

Wenn Sie die veraltete Unity-Runtime (entspricht .NET 3.5) verwenden, wird der Debugger immer dann unterbrochen, wenn eine Ausnahme nicht behandelt wurde (d.h. außerhalb eines try/catch-Blocks). Wenn eine Ausnahme behandelt wird, verwendet der Debugger das Fenster „Ausnahmeeinstellungen“, um zu bestimmen, ob eine Unterbrechung erforderlich ist.

Mit der neuen Runtime (entspricht .NET 4.6) wurde in Unity eine neue Möglichkeit zum Verwalten von Benutzerausnahmen eingeführt. Dadurch werden alle Ausnahmen als „Vom Benutzer behandelt“ betrachtet, auch wenn diese außerhalb eines try/catch-Blocks auftreten. Deshalb sollten Sie diese explizit im Fenster „Ausnahmeeinstellungen“ überprüfen, wenn Sie möchten, dass der Debugger unterbrochen wird.

Erweitern Sie im Fenster „Ausnahmeeinstellungen“ („Debuggen“ > „Fenster“ > „Ausnahmeeinstellungen“) den Knoten für eine Ausnahmekategorie (z. B. Common Language Runtime-Ausnahmen, also .NET-Ausnahmen), und aktivieren Sie das Kontrollkästchen für die Ausnahme, die Sie innerhalb dieser Kategorie abfangen möchten (z. B. „System.NullReferenceException“). Sie können auch eine ganze Kategorie von Ausnahmen auswählen.

Unter Windows fordert Visual Studio das Herunterladen des Unity-Zielframeworks an.

Bei Verwendung der Legacy-Unity-Runtime (Äquivalent zu .NET 3.5) wird für die Visual Studio-Tools für Unity .NET Framework 3.5 benötigt, das unter Windows 8 oder 10 nicht standardmäßig installiert ist. Befolgen Sie die Anweisungen zum Herunterladen und Installieren von .NET Framework 3.5, um dieses Problem zu beheben.

Bei Verwendung der neuen Unity-Runtime sind je nach Unity-Version auch Pakete zur Festlegung der .NET-Versionen 4.6 oder 4.7.1 erforderlich. Diese können im Visual Studio-Installer schnell installiert werden (wählen Sie Ihre Installation aus, klicken Sie auf „Einzelne Komponenten“, und wählen Sie in der Kategorie „.NET“ alle Pakete zur Festlegung der Zielversion mit 4.x aus).

Probleme mit Assemblyverweisen oder Projekteigenschaften

Wenn Ihr Projekt im Hinblick auf Verweise komplex ist, oder wenn Sie diesen Generationsschritt besser steuern möchten, können Sie unsere API verwenden, um das generierte Projekt oder den Projektmappeninhalt zu bearbeiten. Sie können auch Antwortdateien in Ihrem Unity-Projekt verwenden, die dann verarbeitet werden.

Bei aktuellen Visual Studio- und Unity-Versionen scheint der beste Ansatz darin zu bestehen, eine benutzerdefinierte Directory.Build.props-Datei zusammen mit Ihren generierten Projekten zu verwenden. Sie können dann zur Projektstruktur beitragen, ohne den Generierungsprozess zu beeinträchtigen.

Haltepunkte mit einer Warnung

Wenn Visual Studio keinen Quellspeicherort für einen bestimmten Haltepunkt finden kann, wird Ihnen eine Warnung um Ihren Haltepunkt angezeigt. Überprüfen Sie, ob das von Ihnen verwendete Skript in der Unity-Szene korrekt geladen bzw. verwendet wird.

Haltepunkte werden nicht erreicht.

Überprüfen Sie, ob das von Ihnen verwendete Skript in der Unity-Szene korrekt geladen bzw. verwendet wird. Beenden Sie sowohl Visual Studio als auch Unity, und löschen Sie dann alle generierten Dateien (*.csproj, *.sln), den Ordner .vs und den gesamten Bibliotheksordner. Weitere Informationen zum Debugging in C# finden Sie auf der Unity-Website.

Debuggen von Android Players nicht möglich

Multicast wird für die Erkennung von Players (der von Unity verwendete Standardmechanismus) verwendet. Anschließend wird allerdings eine gewöhnliche TCP-Verbindung verwendet, um den Debugger anzufügen. Die Erkennungsphase stellt für Android-Geräte das größte Problem dar.

WLAN ist zwar vielseitig, aber aufgrund der Wartezeit extrem langsam im Vergleich zu USB. Es wurde mangelnde Unterstützung für einige Router oder Geräte festgestellt (die Nexus-Serien sind dafür besonders bekannt).

USB ist für ein schnelles Debuggen geeignet, und Visual Studio-Tools für Unity kann nun USB-Geräte erkennen und mit dem Adb-Server kommunizieren, um die Ports für das Debuggen ordnungsgemäß weiterzuleiten.

Probleme mit IntelliSense oder der farblichen Hervorhebung von Code

Versuchen Sie, Visual Studio auf die neueste Version zu aktualisieren. Befolgen Sie die Schritte zur Problembehandlung wie für inkompatible Projekte.

Bekannte Probleme

Es gibt bekannte Probleme in Visual Studio-Tools für Unity, deren Ursache die Interaktion des Debuggers mit der älteren Version von Unity des C#-Compilers ist. Wir arbeiten daran, diese Fehler zu beheben, aber in der Zwischenzeit können die folgenden Probleme weiterhin auftreten:

  • Beim Debuggen stürzt Unity manchmal ab.

  • Beim Debuggen friert Unity manchmal ein.

  • Bei Einzel- und Prozedurschritten für Methoden kommt es mitunter zu einem Fehlverhalten, insbesondere bei Iteratoren oder innerhalb von Switch-Anweisungen.

Importfehler

Helfen Sie uns, die Qualität von Visual Studio-Tools für Unity zu verbessern, indem Sie Fehlerberichte senden, sollte das Programm abstürzen, einfrieren oder ein anderer Fehler auftreten. Dies hilft uns beim Untersuchen und Beheben von Problemen in Visual Studio-Tools für Unity. Vielen Dank!

Wie Sie einen Fehler melden, wenn Visual Studio einfriert

Uns wurde gemeldet, dass Visual Studio beim Debuggen mit Visual Studio-Tools für Unity mitunter einfriert, aber wir benötigen mehr Daten, um dieses Problem zu verstehen. Sie können uns bei der Untersuchung helfen, indem Sie die folgenden Schritte ausführen.

So melden Sie, dass Visual Studio beim Debuggen mit Visual Studio-Tools für Unity einfriert

Unter Windows:

  1. Öffnen Sie eine Instanz von Visual Studio.

  2. Öffnen Sie das Dialogfeld "An den Prozess anhängen". Wählen Sie in der neuen Instanz von Visual Studio im Hauptmenü Debuggen, An den Prozess anhängen.

  3. Hängen Sie den Debugger an die eingefrorene Instanz von Visual Studio an. Wählen Sie im Dialogfeld An den Prozess anhängen die eingefrorene Instanz von Visual Studio in der Tabelle Verfügbare Prozesse aus, und klicken Sie dann auf die Schaltfläche Anhängen .

  4. Halten Sie den Debugger an. Klicken Sie in der neuen Instanz von Visual Studio im Hauptmenü auf Debuggen, Alle unterbrechen, oder drücken Sie STRG+ALT+UNTRBR.

  5. Erstellen Sie einen Thread-Dump. Geben Sie im Befehlsfenster den folgenden Befehl ein, und drücken Sie die EINGABETASTE:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    Möglicherweise müssen Sie zuerst das Fenster Befehl einblenden. Wählen Sie in Visual Studio im Hauptmenü Ansicht, Weitere Fenster, Befehlsfenster.

Unter Mac:

  1. Öffnen Sie ein Terminal, und rufen Sie die PID von Visual Studio für Mac ab:

    ps aux | grep "[V]isual Studio.app"
    
  2. Starten Sie den LLDB-Debugger:

    lldb
    
  3. Führen Sie eine Anfügung an die Visual Studio für Mac-Instanz durch:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. Rufen Sie StackTrace für alle Threads ab:

    bt all
    

Senden Sie zum Schluss den Thread-Dump an vstusp@microsoft.comzusammen mit einer Beschreibung, was Sie gerade getan haben, als Visual Studio eingefroren ist.

Siehe auch