Устранение неполадок и известные проблемы (набор средств Visual Studio для Unity)

В этом разделе рассмотрены решения по устранению проблем, типичных для набора средств Visual Studio для Unity, приведено описание известных проблем и показано, как улучшить функционирование набора средств Visual Studio для Unity с помощью отчетов об ошибках.

Устранение неполадок соединения между Unity и Visual Studio

Параметр Confirm Editor Attaching включен или Code Optimization On Startup установлен в значение Debug

В меню Unity выберите Edit / Preferences .

В зависимости от используемой версии Unity:

  • Убедитесь, что Code Optimization On Startup для параметра задано значение Debug .
  • Или выберите External Tools вкладку. Убедитесь, что Editor Attaching флажок включен.

Дополнительные сведения см. в документации по настройкам Unity.

Не удается подключить

  • Попробуйте временно отключить антивирусную программу или создать правила исключения для VS и Unity.
  • Попробуйте временно отключить брандмауэр или создать правила, разрешающие сетевое взаимодействие между VS и Unity по протоколам TCP/UDP.
  • Некоторые программы, например Team Viewer могут препятствовать обнаружению процессов. Попробуйте временно остановить все лишнее программное обеспечение, чтобы выяснить, повлияет ли это на что-либо.
  • Не переименовывайте основной исполняемый файл Unity, так как VSTU отслеживают только процессы "Unity.exe".

Сбои Visual Studio

Эта проблема может быть вызвана повреждением кэша MEF в Visual Studio.

Попробуйте удалить следующую папку, чтобы сбросить кэш MEF (перед этим закройте Visual Studio):

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

Это должно исправить проблему. Если проблема не устранена, запустите командную строку разработчика для Visual Studio от имени администратора и выполните следующую команду:

 devenv /setup

Visual Studio не отвечает

Некоторые подключаемые модули Unity, такие как Parse, FMOD, UMP (Universal Media Player), ZFBrowser или Embedded Browser, используют собственные потоки. Эта проблема возникает, когда подключаемый модуль подключает собственный поток к среде выполнения, что блокирует вызовы ОС. Это означает, что Unity не может прервать этот поток для отладчика (или перезагрузки домена) и перестает отвечать на запросы.

Для FMOD существует обходной путь. Вы можете передать флаг инициализации FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE, чтобы отключить асинхронную обработку и выполнять всю обработку в основном потоке.

Несовместимый проект в Visual Studio

очень важно помнить, что Visual Studio сохраняет "несовместимое" состояние в параметрах проекта и не пытается перезагрузить проект до тех пор, пока не будет явно использован Reload Project . Поэтому после каждого шага устранения неполадок убедитесь, что вы пытаетесь повторно открыть решение, и попробуйте щелкнуть правой кнопкой мыши все несовместимые проекты и выбрать Reload Project .

  1. убедитесь, что Visual Studio установлен в качестве внешнего редактора скриптов в Unity с помощью Edit / Preferences / External Tools .
  2. В зависимости от версии Unity:
    • убедитесь, что подключаемый модуль Visual Studio установлен в Unity. Help / Aboutдолжно отобразиться сообщение, например инструменты Microsoft Visual Studio для Unity включены внизу.
    • Unity 2020. x +: убедитесь, что вы используете последний пакет редактора Visual Studio в Window / Package Manager .
  3. Попробуйте удалить все файлы проектов и решений, а также .vs папку в проекте.
  4. Попробуйте повторно создать проекты или решения с помощью Open C# Project или Edit / Preferences / External tools / Regenerate Project files .
  5. Убедитесь, что вы установили рабочую нагрузку Game/Unity в Visual Studio.
  6. Попробуйте очистить кэш MEF, как описано здесь.
  7. попытайтесь переустановить Visual Studio (используя рабочую нагрузку "игра" или "Unity" только для запуска).
  8. Попробуйте отключить сторонние расширения, если они могут помешать работе расширения Unity в Tools / Extensions .

Дополнительные перезагрузки или закрытие всех открытых окон в Visual Studio

Никогда не работайте с файлами проектов непосредственно из обработчика ресурсов или иного средства. Если вам действительно необходимо совершить операции с файлом проекта, мы предоставляем для этого интерфейс API. См. раздел Проблемы со ссылками на сборку.

Если происходят лишние перезагрузки или если при перезагрузке в Visual Studio закрываются все открытые окна, убедитесь в том, что установлены все необходимые целевые пакеты .NET. Дополнительные сведения см. ниже в разделе, посвященном платформам.

В случае исключений не происходит останов отладчика

При использовании предыдущей версии среды выполнения Unity (эквивалентной версии .NET 3.5), в случае необработанного исключения (вне блока try/catch) всегда происходит останов отладчика. Если исключение обрабатывается, отладчик использует окно параметров исключений для определения того, требуется ли останов.

В новой среде выполнения Unity (эквивалентной версии .NET 4.6) появился новый способ управления пользовательскими исключениями. В результате все исключения считаются "обработанными пользователем", даже если они произошли вне блока try/catch. Поэтому их необходимо явным образом задавать в окне параметров исключений, если требуется останов отладчика.

В окне "Параметры исключений" ("Отладка" > "Окна" > "Параметры исключений") разверните узел для категории исключений (например, "Исключения среды CLR", то есть исключения .NET) и установите флажок для конкретного исключения, которое необходимо перехватывать, в этой категории (например, System.NullReferenceException). Можно также выбрать всю категорию исключений.

В ОС Windows система Visual Studio предлагает скачать целевую платформу Unity

при использовании устаревшей среды выполнения Unity (эквивалент .net 3,5) Инструменты Visual Studio для Unity требуется платформа .net framework 3,5, которая по умолчанию не установлена на Windows 8 или 10. Чтобы устранить эту проблему, следуйте инструкциям по скачиванию и установке .NET Framework 3.5.

При использовании новой среды выполнения Unity в зависимости от версии Unity также требуются пакеты целевой платформы .NET версии 4,6 или 4.7.1. можно использовать установщик Visual Studio, чтобы быстро установить их (изменить установку, отдельные компоненты, категорию .net, выбрать все 4. x целевые пакеты).

Проблемы со ссылкой на сборку или свойством проекта

Если ваш проект довольно сложен с точки зрения ссылок или требуется лучше контролировать этот этап создания, вы можете использовать наш API для работы с созданным содержимым проекта или решения. Вы также можете использовать файлы ответов в своем проекте Unity и обрабатывать их.

в случае последних версий Visual Studio и Unity лучшим подходом будет использование пользовательского Directory.Build.props файла вместе с созданными проектами. После этого вы сможете участвовать в структуре проекта, не мешая процессу создания. Дополнительные сведения см. здесь.

Точки останова с предупреждением

Если Visual Studio не удается найти исходное расположение для определенной точки останова, рядом с ней отображается предупреждение. Убедитесь, что используемый вами скрипт правильно загружен и используется в текущей сцене Unity.

Точки останова не срабатывают

Убедитесь, что используемый вами скрипт правильно загружен и используется в текущей сцене Unity. закройте Visual Studio и Unity, а затем удалите все созданные файлы ( * . csproj, * . sln), .vs папку и всю папку библиотеки. Дополнительные сведения об отладке C# можно найти на веб-сайтеUnity.

Не удается выполнить отладку проигрывателей Android

Мы используем для обнаружения проигрывателей многоадресную рассылку (это стандартный механизм, применяемый в Unity), но затем применяется простое соединение TCP для подключения отладчика. Этап обнаружения — основная проблема для устройств Android.

Связь через Wi-Fi универсальна, однако она слишком медленная по сравнению с USB из-за задержки. Мы наблюдали отсутствие должной поддержки многоадресной рассылки у некоторых маршрутизаторов или устройств (этим известна серия Nexus).

Связь по USB обладает отличной скоростью для отладки. Инструменты Visual Studio для Unity теперь могут обнаруживать устройства USB и согласовывать с сервером ADB правильную переадресацию портов для отладки.

Проблемы с IntelliSense или разметка кода

попробуйте обновить Visual Studio до последней версии. Выполните те же действия по устранению неполадок, что и для несовместимых проектов.

Известные проблемы

Применительно к набору средств Visual Studio для Unity существуют известные проблемы, которые возникают вследствие взаимодействия отладчика со старой версией компилятора C# в Unity. Мы работаем над устранением этих проблем, но в то же время могут возникать другие проблемы.

  • При отладке Unity иногда аварийно завершает работу.

  • При отладке Unity иногда зависает.

  • Пошаговая отладка с заходом и выходом из методов иногда ведет себя некорректно, особенно в итераторах или внутри инструкций switch.

Отчеты об ошибках

Помогите нам улучшить качество набора средств Visual Studio для Unity: отправляйте нам отчеты об ошибках при аварийном выходе, зависании или в случае других ошибок. Эти сведения помогают нам определять причину и устранять проблемы в наборе средств Visual Studio для Unity. Спасибо!

Как сообщить об ошибке в случае зависания Visual Studio

Существуют отчеты о том, что иногда Visual Studio зависает при отладке с помощью набора средств Visual Studio для Unity, но чтобы разобраться в проблеме, нам требуется больше данных. Вы можете помочь нам разобраться с проблемой, если выполните следующие действия.

Создание отчета о зависании Visual Studio во время отладки с помощью набора средств Visual Studio для Unity

В Windows:

  1. Откройте новый экземпляр Visual Studio.

  2. Откройте диалоговое окно "Присоединение к процессу". В новом экземпляре Visual Studio в главном меню выберите Отладка, Присоединение к процессу.

  3. Присоедините отладчик к замороженному экземпляру Visual Studio. В диалоговом окне Присоединение к процессу выберите замороженный экземпляр Visual Studio в таблице Доступные процессы , а затем нажмите кнопку Присоединить .

  4. Приостановите отладчик. В новом экземпляре Visual Studio в главном меню выберите Отладка, Прервать все или просто нажмите CTRL+ALT+BREAK.

  5. Создайте дамп потока. В окне командной строки введите следующую команду и нажмите клавишу ВВОД:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    Возможно, сначала будет нужно отобразить окно Команда . В Visual Studio в главном меню выберите Представление, Другие окна, Командное окно.

На Mac:

  1. Откройте терминал и получите идентификатор процесса Visual Studio для Mac:

    ps aux | grep "[V]isual Studio.app"
    
  2. Запустите отладчик lldb.

    lldb
    
  3. Подключитесь к экземпляру Visual Studio для Mac, используя идентификатор процесса:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. Извлеките трассировку стека для всех потоков:

    bt all
    

Наконец, отправьте дамп потока по адресу vstusp@microsoft.com, а также опишите, что вы делали, когда среда Visual Studio зависла.

См. также