Řešení potíží a známé problémy (Visual Studio Tools for Unity)

V této části najdete řešení běžných problémů s Visual Studio Tools for Unity, popisy známých problémů a dozvíte se, jak můžete zlepšit Visual Studio Tools for Unity hlášením chyb.

Řešení potíží s připojením mezi Unity a Visual Studio

Ověřte, Editor Attaching že je povolené nebo je nastavené na Code Optimization On Startup . Debug

V nabídce Unity vyberte Edit / Preferences .

V závislosti na použité verzi Unity:

  • Ověřte, Code Optimization On Startup že je nastavená na Debug .
  • Případně vyberte External Tools kartu. Potvrďte, Editor Attaching že je zaškrtávací políčko povolené.

Další informace najdete v dokumentaci k předvolbách Unity.

Nelze připojit

  • Zkuste dočasně zakázat antivirový program nebo vytvořit pravidla vyloučení pro VS i Unity.
  • Zkuste dočasně zakázat bránu firewall nebo vytvořit pravidla pro povolení sítě TCP/UDP mezi VS a Unity.
  • Některé programy, například Team Viewer, mohou narušovat detekci procesů. Můžete se pokusit dočasně zastavit jakýkoli další software, abyste viděli, jestli něco změní.
  • Hlavní spustitelný soubor Unity nepřijmenovávat, protože VSTU monitoruje jenom Unity.exe procesy.

Visual Studio selhání

Tento problém může být způsobený poškozením Visual Studio mezipaměti MEF.

Zkuste odebrat následující složku a resetovat mezipaměť MEF (před tím Visual Studio zavřete okno):

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

Tím by se měl váš problém vyřešit. V případě, že problém přetrvává, spusťte Developer Command Prompt pro Visual Studio správce a použijte následující příkaz:

 devenv /setup

Visual Studio přestane reagovat

Nativní vlákna používá několik modulů plug-in Unity, jako je Parse, FMOD, UMP (Universal Media Player), ZFBrowser nebo Embedded Browser. Jedná se o problém, kdy modul plug-in připojí nativní vlákno k modulu runtime, které pak blokuje volání operačního systému. To znamená, že Unity nemůže přerušit toto vlákno pro ladicí program (nebo opětovné načtení domény) a přestat reagovat.

Pro FMOD existuje alternativní řešení, můžete předat příznak inicializace a zakázat asynchronní zpracování a provést veškeré zpracování FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE hlavního vlákna.

Nekompatibilní projekt v Visual Studio

Velmi důležité je vědět, že Visual Studio ukládá "nekompatibilní" stav v nastavení projektu a nebude se pokoušet znovu načíst projekt, dokud explicitně nepoužitíte Reload Project . Proto se po každém kroku řešení potíží pokuste znovu otevřít řešení, zkuste kliknout pravým tlačítkem na všechny nekompatibilní projekty a zvolit Reload Project .

  1. Pomocí příkazu Visual Studio zkontrolujte, že je nastavený jako externí editor skriptů v Edit / Preferences / External Tools Unity.
  2. V závislosti na vaší verzi Unity:
    • Zkontrolujte, že je Visual Studio modul plug-in nainstalovaný v Unity. Help / Aboutby měl zobrazit zprávu, Microsoft Visual Studio je v dolní části povolená možnost Tools for Unity.
    • Unity 2020.x+: Zkontrolujte, že používáte nejnovější balíček Visual Studio Editor v Window / Package Manager .
  3. Zkuste odstranit všechny projekty nebo soubory řešení .vs a složku ve vašem projektu.
  4. Zkuste znovu s využitím nebo znovu vytyčovat Open C# Project projekty nebo Edit / Preferences / External tools / Regenerate Project files řešení.
  5. Ujistěte se, že jste nainstalovali úlohu Game/Unity do Visual Studio.
  6. Zkuste mezipaměť MEF vyčistit, jak je vysvětleno tady.
  7. Zkuste znovu nainstalovat Visual Studio (ke spuštění se používá jenom úloha Game/Unity).
  8. Zkuste zakázat rozšíření třetích stran pro případ, že by mohla narušovat rozšíření Unity v Tools / Extensions .

Další opětovné načtení nebo Visual Studio všechna otevřená okna

Nikdy se nedotkejte projektových souborů přímo z procesoru prostředků nebo jiného nástroje. Pokud skutečně potřebujete manipulovat se souborem projektu, zpřístupníme pro to rozhraní API. Projděte si část Problémy s odkazy na sestavení.

Pokud dochází k opětovnému načtení navíc nebo Visual Studio při opětovném načtení dochází ke ztrátě všech otevřených Windows, ujistěte se, že máte nainstalované správné balíčky cílení na .NET. Další informace najdete v následující části o architekturách.

Ladicí program nenaruší výjimky

Při použití starší verze modulu runtime Unity (ekvivalent .NET 3.5) se ladicí program při neošetřené výjimce vždy přeruší (=mimo blok try/catch). Pokud je výjimka zpracována, ladicí program použije exception Nastavení window k určení, jestli je přerušení povinné.

S novým prostředím runtime (ekvivalentem .NET 4.6) zavedla Unity nový způsob správy uživatelských výjimek a v důsledku toho se všechny výjimky řešily jako "uživatelem zpracované", i když jsou mimo blok try/catch. To je důvod, proč je teď potřeba explicitně zkontrolovat v okně Nastavení výjimek, pokud chcete ladicí program přerušit.

V okně Exception Nastavení (Výjimka ladění > Windows > Nastavení) rozbalte uzel pro kategorii výjimek (například Výjimky modulu CLR (Common Language Runtime, to znamená výjimky rozhraní .NET) a zaškrtněte políčko pro konkrétní výjimku, kterou chcete zachytit v rámci této kategorie (například System.NullReferenceException). Můžete také vybrat celou kategorii výjimek.

Na Windows vás Visual Studio ke stažení cílové architektury Unity.

Při použití starší verze modulu runtime Unity (ekvivalent .NET 3.5) vyžaduje Visual Studio Tools for Unity rozhraní .NET Framework 3.5, které se ve výchozím nastavení na počítači Windows 8 nebo 10 neinstaluje. Pokud chcete tento problém vyřešit, postupujte podle pokynů ke stažení a instalaci rozhraní .NET Framework 3.5.

Při použití nového modulu runtime Unity se v závislosti na verzi Unity také vyžaduje cílení na .NET verze 4.6 nebo 4.7.1. K rychlé instalaci je možné použít instalační Visual Studio (upravit instalaci, jednotlivé komponenty, kategorii .NET, vybrat všechny balíčky cílení 4.x).

Problémy s odkazem na sestavení nebo vlastnostmi projektu

Pokud je váš projekt složitý nebo pokud chcete tento krok generování lépe řídit, můžete k manipulaci s vygenerovaný projekt nebo obsahem řešení použít naše rozhraní API. Soubory odpovědí můžete použít také v projektu Unity a my je zpracujeme.

Vzhledem k Visual Studio verzím a verzím Unity se zdá, že nejlepší přístup používá spolu s vygenerovanými Directory.Build.props projekty vlastní soubor. Pak budete moct přispívat do struktury projektu, aniž byste zasahovat do procesu generování. Další informace najdete tady.

Zarážky s upozorněním

Pokud Visual Studio najít zdrojové umístění pro konkrétní zarážku, zobrazí se kolem zarážky upozornění. Zkontrolujte, že se skript, který používáte, správně načetl nebo použil v aktuální scéně Unity.

Zarážky se nenarazí

Zkontrolujte, že se skript, který používáte, správně načetl nebo použil v aktuální scéně Unity. Ukončete Visual Studio i Unity a pak odstraňte všechny vygenerované soubory ( * .csproj, .sln), složku a * .vs celou složku Library. Další informace o ladění v jazyce C# najdete na webu Unity.

Nedaří se ladit přehrávačů Androidu

K detekci přehrávače používáme vícesměrové vysílání (což je výchozí mechanismus používaný Unity), ale potom k připojení ladicího programu použijeme normální připojení TCP. Fáze detekce je hlavním problémem pro zařízení s Androidem.

Wi-Fi je univerzální, ale v porovnání s USB je velmi pomalé kvůli latenci. Viděli jsme nedostatečnou podporu vícesměrového vysílání pro některé směrovače nebo zařízení (řada Nexus je pro to dobře známá).

USB je pro ladění superrychlé a Visual Studio Tools for Unity teď dokáže rozpoznat zařízení USB a popovídat si se serverem adb, aby správně přeposíl porty pro ladění.

Problémy s IntelliSense nebo zabarvením kódu

Zkuste upgradovat Visual Studio na nejnovější verzi. Vyzkoušejte stejný postup řešení potíží jako u nekompatibilních projektů.

Známé problémy

Existují známé problémy v Visual Studio Tools for Unity které jsou důsledkem toho, jak ladicí program komunikuje se starší verzí kompilátoru C# Unity. Pracujeme na tom, aby tyto problémy pomohly vyřešit, ale mezitím může dojít k následujícím problémům:

  • Při ladění unity někdy dojde k chybě.

  • Při ladění se Unity někdy zablokuje.

  • Krokování do metody a z metody se někdy chová nesprávně, zejména v iterátorech nebo v rámci příkazů switch.

Hlášení chyb

Pomozte nám vylepšit kvalitu chyb Visual Studio Tools for Unity odesíláním zpráv o chybách, když dojde k chybám, zablokováním nebo jiným chybám. To nám pomáhá prozkoumat a opravit problémy v Visual Studio Tools for Unity. Děkujeme!

Jak nahlásit chybu, když Visual Studio zablokuje

Existují sestavy, které Visual Studio při ladění pomocí nástroje Visual Studio Tools for Unity zablokuje, ale k pochopení tohoto problému potřebujeme více dat. S šetřením nám můžete pomoct pomocí následujícího postupu.

Pokud chcete ohlásit, Visual Studio ladění zamrzne při ladění pomocí Visual Studio Tools for Unity

Na Windows:

  1. Otevřete novou instanci Visual Studio.

  2. Otevřete dialogové okno Připojit k procesu. V nové instanci služby Visual Studio v hlavní nabídce zvolte Ladit, Připojit k procesu.

  3. Připojte ladicí program k zmrazené instanci Visual Studio. v dialogovém okně připojit k procesu vyberte v tabulce dostupné procesy zmrazenou instanci Visual Studio a pak klikněte na tlačítko připojit .

  4. Pozastavit ladicí program. v nové instanci Visual Studio v hlavní nabídce zvolte možnost ladit, přerušit vše nebo stačí stisknout kombinaci kláves Ctrl + Alt + Break.

  5. Vytvořte výpis vlákna. V okno Příkaz zadejte následující příkaz a stiskněte klávesu ENTER:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    Může být nutné okno příkazového řádku zviditelnit jako první. v Visual Studio v hlavní nabídce vyberte možnost zobrazit, další Windows, příkazové okno.

Na počítači Mac:

  1. otevřete terminál a získejte PID Visual Studio pro Mac:

    ps aux | grep "[V]isual Studio.app"
    
  2. Spusťte ladicí program lldb:

    lldb
    
  3. připojte se k instanci Visual Studio pro Mac pomocí identifikátoru PID:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. Načíst trasování zásobníku pro všechna vlákna:

    bt all
    

nakonec pošlete výpis vlákna do vstusp@microsoft.com , spolu s popisem toho, co jste dělali při Visual Studio bylo zmrazeno.

Viz také