문제 해결 및 알려진 문제(Visual Studio Tools for Unity)Troubleshooting and Known Issues (Visual Studio Tools for Unity)

이 섹션에서는 Visual Stuio Tools for Unity와 관련된 일반적인 문제에 대한 솔루션, 알려진 문제의 설명을 찾아보고 오류를 보고하여 Visual Studio Tools for Unity를 개선하는 데 도움이 되는 방법을 알아봅니다.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.

문제 해결Troubleshooting

Visual Studio Tools for Unity에 대한 몇 가지 일반적인 문제를 해결하려면 다음 섹션을 참조하세요.To resolve some common issues with Visual Studio Tools for Unity, see the following sections.

Visual Studio 크래시Visual Studio crashes

Visual Studio MEF 캐시가 손상되었기 때문에 발생할 수 있습니다.This can be due to the Visual Studio MEF cache being corrupted.

MEF 캐시를 다시 설정하려면 다음 폴더를 제거해야 합니다. 먼저 Visual Studio를 닫은 후에 이 작업을 수행하세요.You should remove the following folder to reset the MEF cache (please close Visual Studio before doing this):

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

이렇게 하면 문제가 해결됩니다.This should fix your issue. 문제가 여전히 발생하는 경우 관리자 권한으로 Visual Studio용 개발자 명령 프롬프트를 실행하고 다음 명령을 사용합니다.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 2015 및 IntelliSense 또는 코드 색 지정 관련 문제입니다.Issues with Visual Studio 2015 and IntelliSense or code coloration.

Visual Studio 2015를 업데이트 3으로 업그레이드해야 합니다.You should try to upgrade your Visual Studio 2015 to update 3.

Visual Studio 2017 사용 시 코드 색 지정이 없는 셰이더 파일Shader files without code coloration when using Visual Studio 2017

Visual Studio 2017 인스턴스에서 "C++를 사용한 데스크톱 개발" 워크로드가 설치되어 있는지 확인해야 합니다.Please make sure that the "Desktop Development with C++" workload is installed in your instance of Visual Studio 2017. 코드 색 지정에 사용되는 C/C++ 파서는 이 워크로드와 함께 제공됩니다.The C/C++ parser used for code coloration is bundled with this workload.

Visual Studio 중지Visual Studio hangs

Parse, FMOD, UMP(Universal Media Player), ZFBrowser 또는 Embedded Browser와 같이 몇 가지 Unity 플러그인은 네이티브 스레드를 사용합니다.Several Unity plugins like Parse, FMOD, UMP (Universal Media Player), ZFBrowser or Embedded Browser are using native threads. 플러그인에서 네이티브 스레드를 런타임에 연결할 때 발생하는 문제이며, 이는 OS에 대한 호출을 차단합니다.It’s an issue when a plugin ends up attaching a native thread to the runtime, which then does blocking calls to the OS. 즉 Unity에서 디버거(또는 도메인 다시 로드)에 대한 해당 스레드를 중단하고 정지할 수 없습니다.This means Unity can't interrupt that thread for the debugger (or domain reload) and hang.

FMOD의 경우 일시적인 해결 방법이 있습니다. 즉 FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE 초기화 플래그를 전달하여 비동기 처리를 비활성화하고 주 스레드에서 모든 처리를 수행할 수 있습니다.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.

Visual Studio에서 호환되지 않는 프로젝트Incompatible project in Visual Studio

먼저 Unity에서 Visual Studio가 외부 스크립트 편집기로 설정되어 있는지 확인합니다(편집/기본 설정/외부 도구).First, check that Visual Studio is set as your external script editor in Unity (Edit/Preferences/External Tools). 다음으로 Unity에 Visual Studio 플러그인이 설치되어 있는지 확인합니다(도움말/정보에 Microsoft Visual Studio Tools for Unity와 같은 메시지가 표시되어야 함).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). 다음으로 확장이 Visual Studio에 제대로 설치되어 있는지 확인합니다(도움말/정보).Then check that the extension is properly installed in Visual Studio (Help/About).

추가 다시 로드 또는 열린 모든 창이 손실되는 Visual StudioExtra reloads, or Visual Studio losing all open windows

자산 처리기나 다른 도구에서 프로젝트 파일을 직접 터치하지 마십시오.Be sure to never touch project files directly from an asset processor or any other tool. 프로젝트 파일을 정말로 조작해야 하는 경우 API를 사용하는 것이 좋습니다.If you really need to manipulate the project file, we expose an API for that. 어셈블리 참조 문제 섹션을 참조하세요.Please check the Assembly references issues section.

다시 로드가 추가로 발생하거나 Visual Studio에서 다시 로드 시 열려 있는 창이 모두 손실되면 적절한 .NET 타기팅 팩이 설치되어 있는지 확인해야 합니다.If you experience extra reloads or if Visual Studio is losing all open Windows on reload, please make sure that you have proper .NET targeting packs installed. 자세한 내용은 프레임워크에 대한 다음 섹션을 참조하세요.Please check the following section about frameworks for more information.

디버거가 예외 발생 시 중단되지 않음The debugger does not break on exceptions

레거시 Unity 런타임(.NET 3.5와 동일)을 사용할 때 예외가 처리되지 않으면 디버거가 항상 중단됩니다(=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). 예외가 처리되면 디버거는 예외 설정 창을 사용하여 중단이 필요한지 여부를 결정합니다.If the exception is handled, the debugger will use the Exception Settings Window to determine if a break is required or not.

새 런타임(.NET 4.6과 동일)을 통해 Unity에 사용자 예외를 관리하는 새로운 방법이 도입되었기 때문에 모든 예외가 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. 따라서 디버거를 중단하려면 예외 설정 창에서 명시적으로 디버거를 확인해야 합니다.That's why you now need to explicitly check them in the Exception Settings Window if you want the debugger to break.

예외 설정 창(디버그 > 창 > 예외 설정)에서 예외 범주(예: .NET 예외를 의미하는 공용 언어 런타임 예외)에 대한 노드를 확장하고 해당 범주 내에서 catch하려는 특정 예외(예: 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). 전체 예외 범주를 선택할 수도 있습니다.You can also select an entire category of exceptions.

Windows에서 Visual Studio는 Unity 대상 프레임워크를 다운로드하도록 요청합니다.On Windows, Visual Studio asks to download the Unity target framework

Visual Studio Tools for Unity를 사용하려면 Windows 8 또는 10에 기본적으로 설치되지 않는 .NET Framework 3.5가 필요합니다.Visual Studio Tools for Unity requires the .NET framework 3.5, which isn't installed by default on Windows 8 or 10. 이 문제를 해결하려면 지침에 따라 .NET framework 3.5를 다운로드하고 설치하세요.To fix this issue, follow the instructions to download and install the .NET framework 3.5.

새로운 Unity 런타임을 사용하는 경우 .NET 타기팅 팩 버전 4.6 및 4.7.1도 필요합니다.When using the new Unity runtime, .NET targeting packs version 4.6 and 4.7.1 are also required. VS2017 설치 관리자를 사용하여 신속하게 설치할 수 없습니다(VS2017 설치, 개별 구성 요소, .NET 범주 수정, 모든 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).

어셈블리 참조 문제Assembly reference issues

프로젝트가 복잡한 전체 참조이거나 이 생성 단계를 더 잘 제어하려는 경우 API를 사용하여 생성된 프로젝트 또는 솔루션 콘텐츠를 조작할 수 있습니다.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. Unity 프로젝트에서 응답 파일을 사용할 수도 있으며, 이렇게 처리할 예정입니다.You can also use response files in your Unity project and we'll process them.

경고가 있는 중단점Breakpoints with a warning

Visual Studio에서 특정 중단점에 대한 원본 위치를 찾을 수 없는 경우 중단점 주변에 경고가 표시됩니다.If Visual Studio is unable to find a source location for a specific breakpoint you will see a warning around your breakpoint. 사용하는 동작이 현재 Unity 장면에 제대로 로드/사용되었는지 확인합니다.Check that the behaviour you are using is properly loaded/used in the current Unity scene.

적중되지 않는 중단점Breakpoints not hit

사용하는 동작이 현재 Unity 장면에 제대로 로드/사용되었는지 확인합니다.Check that the behaviour you are using is properly loaded/used in the current Unity scene. Visual Studio와 Unity를 모두 종료한 다음 생성된 모든 파일(.csproj, *.sln)과 전체 라이브러리 폴더를 삭제합니다.Quit both Visual Studio and Unity then delete all generated files (.csproj, *.sln) and the whole Library folder.

연결할 수 없음Unable to attach

  • VS 및 Unity 모두에 대해 바이러스 백신을 일시적으로 사용하지 않도록 설정하거나 제외 규칙을 만들어 봅니다.Try to temporarily disable your antivirus or create exclusion rules for both VS and Unity.
  • 방화벽을 일시적으로 사용하지 않도록 설정하거나 VS와 Unity 간에 TCP/UDP 네트워킹을 허용하는 규칙을 만들어 봅니다.Try to temporarily disable your firewall or create rules for allowing TCP/UDP networking between VS and Unity.
  • 팀 뷰어와 같은 프로그램이 프로세스 검색을 방해하고 있음을 확인했습니다. 모든 추가 소프트웨어를 일시적으로 중지하여 변경된 소프트웨어가 있는지 확인해 볼 수도 있습니다.We identified that programs like Team Viewer are interfering with process detection; perhaps you can try to stop temporarily any extra software to see if it changes something.
  • VSTU가 "Unity.exe" 프로세스를 모니터링하는 경우 기본 Unity 실행 파일의 이름을 바꾸지 않습니다.Do not rename the main Unity executable, as VSTU is only monitoring "Unity.exe" processes.

Android 플레이어를 디버그할 수 없음Unable to debug Android players

플레이어 검색(Unity에서 사용하는 기본 메커니즘)에 멀티캐스트를 사용하지만, 이후에는 일반 TCP 연결을 사용하여 디버거를 연결합니다.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. 검색 단계는 Android 장치에 대한 주요 문제입니다.The detection phase is the main issue for Android devices.

Wi-Fi는 유용하지만 대기 시간 때문에 USB에 비해 속도가 느립니다.Wifi is versatile but super slow compared to USB because of latency. 일부 라우터 또는 장치에 대해 적절한 멀티캐스트 지원이 부족하다는 것을 확인했습니다(Nexus 시리즈는 이에 대해 잘 알려져 있음).We saw a lack of proper multicast support for some routers or devices (Nexus series are well known for this).

USB는 디버깅하기에 매우 빠릅니다. 이제 Visual Studio Tools for Unity에서 USB 장치를 감지할 수 있고 디버깅을 위해 adb 서버와 통신하여 포트를 올바르게 전달할 수 있습니다.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.

UnityVS에서 Visual Studio Tools for Unity로 마이그레이션Migrating from UnityVS to Visual Studio Tools for Unity

UnityVS에서 Visual Studio Tools for Unity로 마이그레이션하려면 Unity 프로젝트에 대한 새로운 Visual Studio 솔루션을 생성해야 합니다.If you're migrating from UnityVS to Visual Studio Tools for Unity, you'll need to generate new Visual Studio solutions for your Unity projects.

UnityVS 1.8에서 Visual Studio Tools for Unity 1.9로 Unity 프로젝트를 마이그레이션하려면To migrate your Unity project from UnityVS 1.8 to Visual Studio Tools for Unity 1.9
  1. Unity 프로젝트에서 이전 솔루션 및 프로젝트 파일을 삭제합니다.Delete the old solution and project files from your Unity project. Unity 프로젝트의 루트 디렉터리에서 Visual Studio .sln 및 .* proj 파일을 찾아 모두 삭제합니다.In the root directory of your Unity project, locate the Visual Studio .sln and .*proj files and delete them all.

  2. Visual Studio Tools for Unity 패키지를 Unity 프로젝트로 가져옵니다.Import the Visual Studio Tools for Unity package into your Unity project. VSTU 패키지를 가져오는 방법에 대한 자세한 내용은 시작 페이지에서 Visual Studio Tools for Unity 구성을 참조하세요.For information on how to import the VSTU package, see Configure Visual Studio Tools for Unity on the Getting Started page.

  3. 새 솔루션 및 프로젝트 파일을 생성합니다.Generate the new solution and project files. 지금 생성하려면 Unity 편집기의 주 메뉴에서 Visual Studio Tools, 프로젝트 파일 생성을 선택합니다.If you want to generate them now, in the Unity Editor, on the main menu, choose Visual Studio Tools, Generate Project Files. 그렇지 않으면 원하는 경우 이 단계를 건너뛸 수 있습니다. Visual Studio Tools, Visual Studio에서 열기를 선택하면 Visual Studio Tools for Unity에서 새 파일을 자동으로 생성합니다.Otherwise, you can skip this step if you want; Visual Studio Tools for Unity will generate the new files automatically when you choose Visual Studio Tools, Open in Visual Studio.

알려진 문제Known Issues

Visual Studio Tools for Unity에는 디버거가 C# 컴파일러의 Unity 이전 버전과 상호작용하는 방법에서 발생하는 알려진 문제가 있습니다.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. 문제를 해결하기 위해 노력 중이지만 해결하기 전까지 다음과 같은 문제가 발생할 수 있습니다.We're working to help fix these problems, but you might experience the following issues in the meantime:

  • 디버그할 때 Unity가 충돌되는 경우가 있습니다.When debugging, Unity sometimes crashes.

  • 디버그할 때 Unity가 중지되는 경우가 있습니다.When debugging, Unity sometimes freezes.

  • 특히 반복기 또는 switch 문 내에서 경우에 따라 메서드를 한 단계씩 코드 실행하고 메서드의 프로시저에서 나가는 동작이 제대로 작동하지 않습니다.Stepping into and out of methods sometimes behaves incorrectly, especially in iterators or within switch statements.

오류 보고Reporting Errors

충돌, 고정 또는 기타 오류가 발생하는 경우 오류 보고서를 전송하여 Visual Studio Tools for Unity의 품질을 개선할 수 있도록 도와주시기 바랍니다.Please help us improve the quality of Visual Studio Tools for Unity by sending error reports when you experience crashing, freezes, or other errors. Visual Studio Tools for Unity의 문제를 조사하고 해결하는 데 도움이 됩니다.This helps us investigate and fix problems in Visual Studio Tools for Unity. 감사합니다!Thank you!

Visual Studio가 고정될 때 오류를 보고하는 방법How to report an error when Visual Studio freezes

Visual Studio가 Visual Studio Tools for Unity로 디버그할 때 중지되는 경우가 있다는 보고가 있지만 이 문제를 파악하려면 더 많은 데이터가 필요합니다.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. 아래의 단계를 따라 이 문제를 조사하는 데 도움을 주실 수 있습니다.You can help us investigate by following the steps below.

Visual Studio가 Visual Studio Tools for Unity로 디버그할 때 중지되는 문제를 보고하려면To report that Visual Studio freezes while debugging with Visual Studio Tools for Unity

Windows:On Windows:

  1. 새 Visual Studio 인스턴스를 엽니다.Open a new instance of Visual Studio.

  2. 프로세스에 연결 대화 상자를 엽니다.Open the Attach to Process dialog. Visual Studio의 새 인스턴스에 있는 주 메뉴에서 디버그, 프로세스에 연결을 선택합니다.In the new instance of Visual Studio, on the main menu, choose Debug, Attach to Process.

  3. Visual Studio의 중지된 인스턴스에 디버거를 연결합니다.Attach the debugger to the frozen instance of Visual Studio. 프로세스에 연결 대화 상자에서 사용 가능한 프로세스 테이블로부터 Visual Studio의 중지된 인스턴스를 선택한 다음 연결 단추를 선택합니다.In the Attach to Process dialog, select the frozen instance of Visual Studio from the Available Processes table, then choose the Attach button.

  4. 디버거를 일시 중지합니다.Pause the Debugger. Visual Studio의 새 인스턴스에 있는 주 메뉴에서 디버그, 모두 중단을 차례로 선택하거나 Ctrl+Alt+Break를 누르기만 하면 됩니다.In the new instance of Visual Studio, on the main menu, choose Debug, Break All, or just press Ctrl+Alt+Break.

  5. 스레드 덤프를 만듭니다.Create a thread-dump. [명령] 창에서 다음 명령을 입력하고 Enter 키를 누릅니다.In the Command window, enter the following command and press Enter:

    Debug.ListCallStack /AllThreads /ShowExternalCode
    

    명령 창이 먼저 표시되도록 해야 할 수 있습니다.You might need to make the Command window visible first. Visual Studio의 주 메뉴에서 보기, 다른 창, 명령 창을 선택합니다.In Visual Studio, on the main menu, choose View, Other Windows, Command Window.

Mac:On Mac:

  1. 터미널을 열고 Mac용 Visual Studio의 PID를 가져옵니다.Open a terminal and get the PID of Visual Studio for Mac:

    ps aux | grep "[V]isual Studio.app"
    
  2. lldb 디버거를 시작합니다.Launch the lldb debugger:

    lldb
    
  3. PID를 사용하여 Mac용 Visual Studio 인스턴스에 연결합니다.Attach to the Visual Studio for Mac instance using the PID:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. 모든 스레드에 대한 스택 추적을 검색합니다.Retrieve the stacktrace for all the threads:

    bt all
    

마지막으로 Visual Studio가 중지되었을 때 수행한 작업에 대한 설명과 함께 스레드 덤프를 vstusp@microsoft.com으로 보냅니다.Finally, send the thread-dump to vstusp@microsoft.com, along with a description of what you were doing when Visual Studio became frozen.