トラブルシューティングと既知の問題 (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

VS2015 および Intellisense またはコード配色の問題Issues with VS2015 and Intellisense or code coloration.

Visual Studio 2015 を Update 3 にアップグレードする必要があります。You should try to upgrade your Visual Studio 2015 to update 3.

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).

アセンブリ参照の問題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.

USB はデバッグに関しては超高速ですが、Unity プレーヤーの検出メカニズムと互換性がありません。USB is super-fast for debugging, but not compatible with the Unity player discovery mechanism. Wi-Fi は高い汎用性を備えていますが、待機時間のため USB と比べると非常に低速です。Wifi is more 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 を使って以下を試し、接続されたデバイスで開かれているポートを確認できます (デバッグ ポート (常に 56xxx の形式) を認識できるように、プレーヤーを稼働状態にします)。You could try the following using USB to see opened ports on the connected device (with the player up and running so that you can see the debugging port, always in the form 56xxx):

adb shell netstat

ローカル PC にポートを転送します。Forward the port to the local pc:

adb forward tcp:56xxx tcp:56xxx

その後、転送されたポート 127.0.0.1:56xxx を使って VSTU を接続します。Then, connect VSTU using the forwarded port 127.0.0.1:56xxx.

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.

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.

既知の問題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.