Problèmes connus et dépannage (Outils Visual Studio pour Unity)Troubleshooting and known issues (Visual Studio Tools for Unity)

Dans cette section, vous allez trouver les solutions aux problèmes courants rencontrés par Visual Studio Tools pour Unity, ainsi que la description de problèmes identifiés. Vous apprendrez aussi comment vous pouvez aider à améliorer Visual Studio Tools pour Unity en signalant les erreurs.In this section, you'll find solutions to common issues with Visual Studio Tools for Unity, descriptions of known issues, and learn how you can help improve Visual Studio Tools for Unity by reporting errors.

Résolution des problèmes de connexion entre Unity et Visual StudioTroubleshooting the connection between Unity and Visual Studio

Vérifier que l’attachement de l’éditeur est activéConfirm Editor Attaching is enabled

Dans le menu Unity, sélectionnez Edit (Edition) > Preferences (Préférences), puis sélectionnez l’onglet External Tools (Outils externes). Vérifiez que la case Editor Attaching (Attachement de l’éditeur) est cochée.In the Unity Menu, select Edit > Preferences and then select the External Tools tab. Confirm that the Editor Attaching checkbox is enabled. Pour plus d’informations, voir la documentation sur les préférences d’Unity.For more information, see the Unity Preferences documentation.

Impossible de s’attacherUnable to attach

  • Essayez de désactiver temporairement votre antivirus ou créez des règles d’exclusion pour VS et Unity.Try to temporarily disable your antivirus or create exclusion rules for both VS and Unity.
  • Essayez de désactiver temporairement votre pare-feu ou créez des règles d’autorisation de mise en réseau TCP/UDP entre VS et Unity.Try to temporarily disable your firewall or create rules for allowing TCP/UDP networking between VS and Unity.
  • Certains programmes, comme TeamViewer, risquent d’interférer avec la détection des processus.Some programs, like Team Viewer, can interfere with process detection. Vous pouvez tenter d’arrêter temporairement tous les logiciels supplémentaires pour voir si cela change quelque chose.You can try to temporarily stop any extra software to see if it changes something.
  • Ne renommez pas l’exécutable Unity principal, car VSTU surveille uniquement les processus « Unity.exe ».Do not rename the main Unity executable, as VSTU is only monitoring "Unity.exe" processes.

Visual Studio est en panneVisual Studio crashes

Ce problème peut être dû à un endommagement du cache MEF de Visual Studio.This issue can be due to the Visual Studio MEF cache being corrupted.

Tentez de supprimer le dossier suivant pour réinitialiser le cache MEF (fermez Visual Studio avant) :Try removing the following folder to reset the MEF cache (close Visual Studio before doing this):

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

Votre problème devrait être résolu.This should fix your issue. Si le problème persiste, exécutez une invite de commandes développeur pour Visual Studio en tant qu’administrateur et utilisez la commande suivante :In case you are still experiencing the problem, run a Developer Command Prompt for Visual Studio as Administrator and use the following command:

 devenv /setup

Visual Studio se bloqueVisual Studio hangs

Plusieurs plug-ins Unity comme Parse, FMOD, UMP (Universal Media Player), ZFBrowser ou Embedded Browser utilisent des threads natifs.Several Unity plugins like Parse, FMOD, UMP (Universal Media Player), ZFBrowser, or Embedded Browser are using native threads. Un problème se pose quand un plug-in finit par attacher un thread natif au runtime, ce qui aboutit ensuite à des appels bloquants pour le système d’exploitation.It’s an issue when a plugin ends up attaching a native thread to the runtime, which then does blocking calls to the OS. Cela signifie qu’Unity ne peut pas interrompre ce thread pour le débogueur (ou le rechargement de domaine) et se bloque.This means Unity can't interrupt that thread for the debugger (or domain reload) and hang.

Pour FMOD, il existe une solution, vous pouvez passer l’indicateur d’initialisation FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE pour désactiver le traitement asynchrone et effectuer tout le traitement sur le thread principal.For FMOD, there is a workaround, you can pass FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE initialization flag to disable asynchronous processing and perform all processing on the main thread.

Projet incompatible dans Visual StudioIncompatible project in Visual Studio

Tout d’abord, vérifiez que Visual Studio est configuré comme éditeur de script externe dans Unity (Edition/Préférences/Outils externes).First, check that Visual Studio is set as your external script editor in Unity (Edit/Preferences/External Tools). Vérifiez ensuite que le plug-in Visual Studio est installé dans Unity (Aide/À propos de doit afficher un message comme Microsoft Visual Studio Tools pour Unity est activé en bas).Then check that the Visual Studio plugin is installed in Unity (Help/About must display a message like Microsoft Visual Studio Tools for Unity is enabled at the bottom). Vérifiez ensuite que l’extension est correctement installée dans Visual Studio (Aide/À propos de).Then check that the extension is properly installed in Visual Studio (Help/About).

Rechargements supplémentaires ou perte de toutes les fenêtres de Visual StudioExtra reloads, or Visual Studio losing all open windows

Veillez à ne jamais toucher aux fichiers projet directement à partir d’un processeur de composants ou de tout autre outil.Be sure to never touch project files directly from an asset processor or any other tool. Si vous devez vraiment manipuler le fichier projet, utilisez pour cela l’API que nous exposons.If you really need to manipulate the project file, we expose an API for that. Consultez la section des problèmes de références d’assembly.Please check the Assembly references issues section.

Si vous constatez des rechargements supplémentaires ou si Visual Studio perd toutes les fenêtres ouvertes lors du rechargement, vérifiez que les packs de ciblage .NET installés sont les bons.If you experience extra reloads or if Visual Studio is losing all open Windows on reload, make sure that you have proper .NET targeting packs installed. Pour plus d’informations, voir la section suivante sur les frameworks.Check the following section about frameworks for more information.

Le débogueur ne s’arrête pas sur les exceptionsThe debugger does not break on exceptions

Lors de l’utilisation du runtime Unity hérité (équivalent de .NET 3.5), le débogueur s’arrête toujours quand une exception est non gérée (= en dehors d’un bloc try/catch).When using the legacy Unity runtime (.NET 3.5 equivalent), the debugger will always break when an exception is unhandled (=outside a try/catch block). Si l’exception est gérée, le débogueur utilise la fenêtre Paramètres d’exception pour déterminer si un arrêt est nécessaire ou non.If the exception is handled, the debugger will use the Exception Settings Window to determine if a break is required or not.

Avec le nouveau runtime (équivalent de .NET 4.6), Unity introduit une nouvelle méthode de gestion des exceptions de l’utilisateur : toutes les exceptions sont considérées comme « gérées par l’utilisateur », même si elles sont en dehors d’un bloc try/catch.With the new runtime (.NET 4.6 equivalent), Unity introduced a new way for managing user exceptions and as a result, all exceptions are seen as "user-handled" even if they are outside a try/catch block. C’est pourquoi vous devez maintenant les vérifier explicitement dans la fenêtre Paramètres d’exception si vous voulez que le débogueur s’arrête.That's why you now need to explicitly check them in the Exception Settings Window if you want the debugger to break.

Dans la fenêtre Paramètres d’exception (Déboguer > Fenêtres > Paramètres d’exception), développez le nœud d’une catégorie d’exceptions (par exemple Exceptions Common Language Runtime, c’est-à-dire les exceptions .NET), puis cochez la case correspondant à l’exception spécifique que vous voulez intercepter dans cette catégorie (par exemple System.NullReferenceException).In the Exception Settings window (Debug > Windows > Exception Settings), expand the node for a category of exceptions (for example, Common Language Runtime Exceptions, meaning .NET exceptions), and select the check box for the specific exception you want to catch within that category (for example System.NullReferenceException). Vous pouvez également sélectionner une catégorie entière d'exceptions.You can also select an entire category of exceptions.

Dans Windows, Visual Studio vous demande de télécharger la version cible de .Net Framework pour UnityOn Windows, Visual Studio asks to download the Unity target framework

Visual Studio Tools pour Unity nécessite le .NET Framework 3.5, qui n’est pas installé par défaut sur Windows 8 ou 10.Visual Studio Tools for Unity requires the .NET framework 3.5, which isn't installed by default on Windows 8 or 10. Pour résoudre ce problème, suivez les instructions de téléchargement et d’installation du .NET Framework 3.5.To fix this issue, follow the instructions to download and install the .NET framework 3.5.

Lors de l’utilisation du nouveau runtime Unity, les packs de ciblage .NET version 4.6 et 4.7.1 sont également nécessaires.When using the new Unity runtime, .NET targeting packs version 4.6 and 4.7.1 are also required. Il est possible d’utiliser le programme d’installation VS2017 pour les installer rapidement (Modifier votre installation de VS2017, Composants individuels, Catégorie .NET, sélectionnez tous les packs de ciblage 4.x).It is possible to use the VS2017 installer to quickly install them (modify your VS2017 installation, individual components, .NET category, select all 4.x targeting packs).

Problèmes de référence d’assemblyAssembly reference issues

Si votre projet est complexe côté référence ou si vous souhaitez mieux contrôler cette étape de génération, vous pouvez utiliser notre API pour manipuler le contenu du projet ou de la solution généré.If your project is complex reference-wise or if you want to better control this generation step, you can use our API for manipulating the generated project or solution content. Vous pouvez également utiliser des fichiers réponse dans votre projet Unity et nous les traiterons.You can also use response files in your Unity project and we'll process them.

Points d’arrêt avec un avertissementBreakpoints with a warning

Si Visual Studio ne parvient pas à trouver un emplacement source pour un point d’arrêt spécifique, un avertissement s’affiche autour de votre point d’arrêt.If Visual Studio is unable to find a source location for a specific breakpoint you will see a warning around your breakpoint. Vérifiez que le script utilisé est correctement chargé/utilisé dans la scène Unity actuelle.Check that the script you are using is properly loaded/used in the current Unity scene.

Points d’arrêt non atteintsBreakpoints not hit

Vérifiez que le script utilisé est correctement chargé/utilisé dans la scène Unity actuelle.Check that the script you are using is properly loaded/used in the current Unity scene. Quittez à la fois Visual Studio et Unity, puis supprimez tous les fichiers générés (.csproj, *.sln) et l’intégralité du dossier de bibliothèque.Quit both Visual Studio and Unity then delete all generated files (.csproj, *.sln) and the whole Library folder.

Impossible de déboguer les lecteurs AndroidUnable to debug Android players

Nous utilisons la multidiffusion pour la détection de lecteur (qui est le mécanisme par défaut utilisé par Unity), mais nous utilisons par la suite une connexion TCP standard pour attacher le débogueur.We use multicast for player detection (which is the default mechanism used by Unity), but after that we use a regular TCP connection to attach the debugger. La phase de détection représente le principal problème des appareils Android.The detection phase is the main issue for Android devices.

Wi-Fi est polyvalent, mais très lent comparé à USB en raison de la latence.Wifi is versatile but super slow compared to USB because of latency. Nous avons constaté un manque de prise en charge de multidiffusion appropriée pour certains routeurs ou appareils (les séries Nexus sont bien connues pour cela).We saw a lack of proper multicast support for some routers or devices (Nexus series are well known for this).

USB est très rapide pour le débogage, et Visual Studio Tools pour Unity est maintenant en mesure de détecter les périphériques USB et de communiquer avec le serveur adb pour transférer correctement des ports pour le débogage.USB is super-fast for debugging, and Visual Studio Tools for Unity is now able to detect USB devices, and talk to the adb server to properly forward ports for debugging.

Problèmes avec Visual Studio 2015 et IntelliSense ou la coloration du codeIssues with Visual Studio 2015 and IntelliSense or code coloration

Tentez de mettre à niveau Visual Studio 2015 vers la mise à jour 3.Try upgrading your Visual Studio 2015 to update 3.

Problèmes connusKnown issues

Il existe des problèmes connus dans Visual Studio Tools pour Unity qui résultent de la façon dont le débogueur interagit avec une version antérieure de Unity du compilateur C#.There are known issues in Visual Studio Tools for Unity that result from how the debugger interacts with Unity's older version of the C# compiler. Nous nous efforçons de vous aider à résoudre ces problèmes, mais vous rencontrerez peut-être les problèmes suivants d’ici-là :We're working to help fix these problems, but you might experience the following issues in the meantime:

  • Lors du débogage, il arrive que Unity s'arrête.When debugging, Unity sometimes crashes.

  • Lors du débogage, il arrive que Unity se bloque.When debugging, Unity sometimes freezes.

  • L'exécution pas à pas et la reprise des méthodes ne fonctionnent parfois pas très bien, en particulier dans les itérateurs ou dans les instructions switch.Stepping into and out of methods sometimes behaves incorrectly, especially in iterators or within switch statements.

Signaler les erreursReport errors

Aidez-nous à améliorer la qualité de Visual Studio Tools for Unity en envoyant des rapports d'erreurs lorsque vous êtes confronté à un arrêt, un blocage ou autres erreurs.Please help us improve the quality of Visual Studio Tools for Unity by sending error reports when you experience crashing, freezes, or other errors. Ceci nous permet d'examiner et de résoudre les problèmes de Visual Studio Tools pour Unity.This helps us investigate and fix problems in Visual Studio Tools for Unity. Merci !Thank you!

Comment signaler une erreur lorsque Visual Studio se bloqueHow to report an error when Visual Studio freezes

Il a été établi que Visual Studio se bloque parfois lors du débogage avec Visual Studio Tools pour Unity, mais nous avons besoin de plus de données pour comprendre ce problème.There are reports that Visual Studio sometimes freezes when debugging with Visual Studio Tools for Unity, but we need more data to understand this problem. Vous pouvez nous aider à enquêter sur le problème en suivant les étapes ci-dessous.You can help us investigate by following the steps below.

Pour signaler que Visual Studio se bloque pendant le débogage avec Visual Studio Tools pour UnityTo report that Visual Studio freezes while debugging with Visual Studio Tools for Unity

Sur Windows :On Windows:

  1. Ouvrez une nouvelle instance de Visual Studio.Open a new instance of Visual Studio.

  2. Ouvrez la boîte de dialogue Attacher au processus.Open the Attach to Process dialog. Dans la nouvelle instance de Visual Studio, dans le menu principal, choisissez Déboguer, Attacher au processus.In the new instance of Visual Studio, on the main menu, choose Debug, Attach to Process.

  3. Attachez le débogueur à l'instance figée de Visual Studio.Attach the debugger to the frozen instance of Visual Studio. Dans la boîte de dialogue Attacher au processus , sélectionnez l'instance figée de Visual Studio à partir de la table Processus disponibles , puis choisissez le bouton Attacher .In the Attach to Process dialog, select the frozen instance of Visual Studio from the Available Processes table, then choose the Attach button.

  4. Interrompez le débogueur.Pause the Debugger. Dans la nouvelle instance de Visual Studio, dans le menu principal, choisissez Déboguer, Interrompre tout ou appuyez simplement sur Ctrl+Alt+Pause.In the new instance of Visual Studio, on the main menu, choose Debug, Break All, or just press Ctrl+Alt+Break.

  5. Créez un vidage de thread.Create a thread-dump. Dans la fenêtre Commande, entrez la commande suivante et appuyez sur Entrée :In the Command window, enter the following command and press Enter:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    Vous devrez peut-être afficher d'abord la fenêtre Commande .You might need to make the Command window visible first. Dans Visual Studio, dans le menu principal, choisissez Affichage, Autres fenêtres, Fenêtre Commande.In Visual Studio, on the main menu, choose View, Other Windows, Command Window.

Sur Mac :On Mac:

  1. Ouvrez un terminal et obtenez le PID de Visual Studio pour Mac :Open a terminal and get the PID of Visual Studio for Mac:

    ps aux | grep "[V]isual Studio.app"
    
  2. Lancez le débogueur lldb :Launch the lldb debugger:

    lldb
    
  3. Attachez à l’instance de Visual Studio pour Mac à l’aide du PID :Attach to the Visual Studio for Mac instance using the PID:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. Récupérez le StackTrace pour tous les threads :Retrieve the stacktrace for all the threads:

    bt all
    

Enfin, envoyez le vidage de thread à vstusp@microsoft.com, ainsi qu’une description de ce que vous faisiez quand Visual Studio s’est bloqué.Finally, send the thread-dump to vstusp@microsoft.com, along with a description of what you were doing when Visual Studio became frozen.