トラブルシューティングと既知の問題 (Visual Studio Tools for Unity)Troubleshooting and Known Issues (Visual Studio Tools for Unity)

このセクションには、Visual Studio 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 を Update 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). 次に、Visual Studio プラグインが Unity にインストールされていることを確認します ([ヘルプ]/[バージョン情報] で、"Microsoft Visual Studio Tools for Unity is enabled" (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 Studio で開いているウィンドウがすべて失われるExtra 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 Targeting Pack がインストールされていることを確認してください。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 に関する例外) を展開し、そのカテゴリ内のキャッチする特定の例外 (たとえば、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 の場合に Unity ターゲット フレームワークをダウンロードするよう Visual Studio から求められるOn Windows, Visual Studio asks to download the Unity target framework

Visual Studio Tools for Unity には .NET Framework 3.5 が必要ですが、Windows 8 や 10 では既定でインストールされません。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 Targeting Pack バージョン 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 Targeting Pack をすべて選択する) ことができます。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) と Library フォルダー全体を削除します。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.
  • Team Viewer などのプログラムがプロセスの検出を妨げることがわかっています。余分なソフトウェアを一時的に停止して、何か変わるかを確認してみてください。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 から UnityVS to 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.

Unity プロジェクトを UnityVS 1.8 から Visual Studio Tools for Unity 1.9 に移行する方法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][Generate Project Files] を選択します。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][Open in 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

デバッガーが Unity の古いバージョンの C# コンパイラとやり取りする方法に起因する、Visual Studio Tools for 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 Tools for Unity でデバッグすると Visual Studio がフリーズするという報告を受け取っていますが、問題を把握するためにさらにデータを必要としています。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 Tools for Unity でデバッグすると Visual Studio がフリーズすることを報告する方法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. 端末を開き、Visual Studio for Mac の 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 を使って Visual Studio for Mac のインスタンスにアタッチします。Attach to the Visual Studio for Mac instance using the PID:

    process attach --pid THE_PID_OF_THE_VSFM_PROCESS
    
  4. すべてのスレッドの StackTrace を取得します。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.