web-dev-qa-db-ja.com

定義へ移動:「キャレットの下のシンボルに移動できません。」

今日、私のプロジェクトで突然[Go To Definition]をクリックすると、「キャレットの下のシンボルに移動できません」という奇妙なエラーが発生する問題が発生し始めました。

enter image description here

NuGetを使用して Costura.Fody をインストールしてからしばらくして、最初に気付きました。その後アンインストールしましたが、問題は解決しません。ソリューションを複数回クリーニングおよび再構築しました。これが発生し始めた時点の前後の私のgitコミット履歴のどこにも「Fody」または「Costura」のインスタンスがないため、.gitignoreされたファイルの1つが不良でスタックしていると考えています状態。

問題は、対象となる定義が別のファイルにある場合にのみ発生します。現在開いているファイル内の何かの定義へ移動が正常に機能します。 Peek Definitionも正常に機能します。他のソリューション/プロジェクトも同様にうまく機能します-問題を引き起こしているのはこれだけです。

Visual Studio 2015を使用しています。この問題は2013バージョンでは発生していないようです。

このエラーが発生する理由と修正方法を教えてください。

65
Jeff E

このエラーが発生している最後の数日、少なくとも1日に2回..本当に迷惑です!ここで提案した解決策はどれも私にとってはうまくいきませんでした。私が見つけたのは、見つけるのが非常に困難だったので、ここに書き留めています。

  • ビジュアルを閉じる
  • コンソールを開き、ビジュアルインストールフォルダーに移動します。コンピューターのC:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Common7\IDE
  • devenv.exe/resetuserdataを実行します
  • Visual Studioを開きます。読み込みに時間がかかります。

免責事項:Xamarinを使用しています

@ OzSolomonと@xCasperが言ったことを考慮に入れる:

しゅう

これにより、インストールされているプラ​​グインを含むIDEカスタマイズの多くがリセットされます。

/resetuserdataを使用する前に、それに満足していることを確認してください

@xCasper

ただし、Microsoftを介して設定を同期している場合、ほとんどの設定は元に戻ります。キーバインドが復元されず、デフォルトに戻ったように見えるので、私が最も言っています。選択したテーマや色付けの選択、IDEのレイアウト(たとえばタブがある場所)、および戻って来ないように見えるものなど、その他すべて。

60
fabricio

同じ問題が発生しました。上記のすべてのコメントに記載されているすべての手順を実行しました。うまくいきませんでした。しかし、Visual Studioを閉じたときに(ソリューションフォルダー内の) ".vs"フォルダーを削除してから、Visual Studioを再度開きました。今では魔法のように機能します。問題はなくなりました。

85
Anthony

デビッドのソリューション(空のシンボルキャッシュオプションをクリックする方法)を試しましたが、うまくいきませんでした。

どのように解決しましたか?

  • すべてのファイルを閉じる
  • クリーンなソリューション
  • 再構築ソリューション

私にとってこのエラーは意味がありませんが、これを解決しました!

44
joalcego

同じ問題が発生したばかりで、VS 2015とTFSに問題があるようです。いくつかのファイルを別のブランチにマージした後、問題が発生しました。いくつかのことを試してみましたが、うまくいきました:

  • 開いているファイルをすべて閉じてから、VS
  • ツール->オプション->デバッグ->シンボル->空のシンボルキャッシュ
  • TFSチェックインして最新情報を取得します(何らかの理由でこの後機能しました)

なぜそれが起こるのかは分かりませんが、これは私にとってはうまくいきました。zviで言及されているように、TFSTempフォルダーをクリアする価値があるかもしれません。

編集

このパス:%TMP%\TFSTempをWindowsエクスプローラーにコピーアンドペーストしてTFS tempにアクセスできます

34
David

以下は私のためにこれを修正しました:

  • ソリューションエクスプローラーで、ソリューション名を右クリックします。
  • [クリーンソリューション]を選択します

これが正常に完了した後、エラーを受信しなくなり、何かを閉じて再度開く必要がなくなりました。

17
Chris Szalaj

早くやれよ:

  • Visual Studioを閉じます
  • プロジェクトフォルダーに移動し、.userファイルを削除します(非表示の場合があります)
  • Visual Studioを開きます
9
Helper

キャッシュシンボルを消去します([ツール]> [オプション]> [デバッグ]> [シンボル]> [EmptySymbolCache])。ソリューションを管理モードで開きます。

これで問題が解決しました。

6
user3724031

上記の答えは正しいですが、パスは少しずれています。代わりにこれを試してください:

%AppData%\..\Local\Temp\TFSTemp
5
user2386254

上記のすべてを実行しましたが、私の問題は解決しませんでした(VS 2017でプロジェクトを開こうとしました)、

その後、問題はcsprojファイルであることがわかりました。私のプロジェクト(mvc)

vS 2015で作成されました...だから、csprojファイルを編集して置き換えます

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

これで :

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.7\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

それはすべてDotNetCompilerPlatformのバージョンに関するものでした。

(この問題を理解した方法は、VS 2017までに新しいmvcプロジェクトを作成し、csprojファイルを比較したことです-新しいファイルとVS 2015によって作成されたファイル-)


https://stackoverflow.com/users/15667/xan による追加の関連情報(回答がロックされているため)

私にとって(VS2019は古いソリューションを開いています)、ソリューション内のoneプロジェクトのみに影響していました。インポートは次のようになりました。

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

作業中のプロジェクトには

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

行、最初の2を削除し、intelisense /定義に行くなどが再び動作を開始しました。

しかしRoslyn cscコンパイラが欠落しているため、Webプロジェクトは実行されません。

最後に、全体的に機能するソリューションは、プロジェクトのMicrosoft.CodeDom.Providers.DotNetCompilerPlatformおよびMicrosoft.Net.Compilers Nugetパッケージを更新することでした。

4
Mr. Galouz Lee

F12を使用してメソッド定義に移動しようとすると、この問題が発生します。

言及されたすべての項目(/resetuserdataを除く-回復するのが苦痛になるため、試しませんでした)は機能しませんでした。

私のために働いたもの:

  • Visual Studioを終了します
  • コマンドプロンプトから、ソリューションのフォルダーに移動し、次のコードを実行します(これにより、ソリューション内のすべてのbinおよびobjフォルダーが削除されます)。

    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S bin') DO RMDIR /S /Q "%%G"
    FOR /F "tokens=*" %%G IN ('DIR /B /AD /S obj') DO RMDIR /S /Q "%%G"
    
  • Visual Studioを再起動します。ソリューションを開くにはobjフォルダーが再構築されるため、少し時間がかかるはずです。

これを行った後F12動作しました!

サイドノートとして、私は通常、これをソリューションのフォルダー内のバッチファイルに.slnファイルと一緒に配置します。これにより、後で簡単に実行できます!

3
TheHUTMan

Visual Studioを更新した後も同じ問題が発生するので、これが問題の解決方法です。

  1. ビジュアルスタジオを閉じます。
  2. プロジェクトからすべての.vsフォルダーを削除します。
  3. オープンビジュアルスタジオ。
  4. プロジェクトを開きます。

これがこの問題を抱えている人に役立つことを願っています。

3
wut-excel

最近VS 2017 15.5.0にアップグレードし、この問題に遭遇しました。私は試した:

  1. シンボルキャッシュの削除
  2. .vsフォルダーを削除します。
  3. 再構築ソリューション。
  4. Devenv/resetuserdataの実行

悲しいことに、これらのどれも機能しませんでした。これは一部のプロジェクトでのみ発生し、他のプロジェクトでは発生していないことに気付きました。失敗していたプロジェクトでは、すべてのフレームワークバージョンを4.7.1に切り替え、クリーン/リビルドを実行し、「Go to Definition」が再び機能し始めました。

3
billb

Visual Studioを閉じて、そのプロジェクトの非表示のファイル名.vsを削除し、Visual Studioを再度開いてプロジェクトをビルドします。ブーム!いいね!

2
EzeeykiL

他の人によって送信されたパスのほとんどは、機能しないか、少し後方にあります。

このフォルダーを空にします。

%localappdata%\Temp\TFSTemp

これは私のために働いた。

1
Mohannad

これは新しいRoslyn C#コンパイラによるものだと思います。githubissue trackerで実際の開発者の多くがこれに遭遇して修正しようとしていますが、現在はまだ開いています: https:/ /github.com/dotnet/roslyn/issues/9602

私もこれにしばらく時間を費やしましたが、戦いに負けました。しかし、次の回避策は私にとってうまくいくことを発見しました。

回避策

  1. キーボードショートカットを変更F12-> Edit.FindAllReferences(TextEditorの場合)。これにより、定義とすべての参照が検索され、[シンボルの検索結果]でルートノード(定義)がフォーカスされます。
  2. F12を押すと、ENTERは以前のF12と同じようになります。

私にとっては、単にGoToDefinitionよりも優れているようです。

  • F12を押した後、UPまたはDOWNを押して定義の代わりに参照を選択できます
  • これらのいくつかのキー(F12、ENTER、UP、DOWN)を使用するだけで、参照と定義を簡単に切り替えることができ、覚えやすくなります。
1
LubosTomsa

この特定の問題がroslynコンパイラで修正されたことを読んだ後( GitHubでこの問題を参照 )、IVisual Studioを更新しましたバージョン15.0.xから15.3.1まで。今では魅力のように機能します。

0
Franz Wimmer

私にとって、ナビゲートはXAMARINソリューションなしで動作します。その提案はここではありません。 :( Devenv.exe/resetuserdataが機能しません。

私の解決策は、ソリューション、プロジェクト、フォルダー、および作品を再作成することでした。インポートなし。詳細:私のプロジェクトはVS 2015にあり、エラーはVS 2017にありました。

0
Voumir
  1. 2つのクラスの名前空間を確認します。
  2. クラスライブラリにクラスを追加する場合-適切なプロジェクトタイプを使用していることを確認してください。クラスライブラリには2つのタイプがあります。クラスライブラリ(パッケージ)およびクラスライブラリ。 (.dllファイルを作成するため、後者を選択します)他のソリューションで必要に応じて追加できます。
0
Dev

私はこのエラーをもうしばらくとることができなくなるまでかなり長い間持っていたので、上記のすべての可能な解決策を試しましたが、うまくいきませんでした。エラーは、特定のプロジェクト(上記のような)でのみ表示され、他のプロジェクトでは表示されないことに気付きました。そのため、何も機能していないため、プロジェクトを別のフォルダーに再度複製し、再び機能し始めました。

0
user742102

「devenv.exe/resetuserdata」を実行した後、私のVAssistXは失敗するため、実際、これはVAssistXはGoto Implementation(Alt + G)によって問題を解決できることを思い出させます。

0
macrod

以下は私にとって魅力的なものでした:

  1. プロジェクトをビルドしたときに表示される警告を確認しました
  2. それらのいくつかは、アセンブリのバージョンの競合について何かを述べました。 Visual Studioは、警告をクリックしてEnterキーを押すことを提案しました。問題を自動的に修正するためのポップアップウィンドウが表示されたので、修正しました。
  3. 問題が解決しました!
0
Charalabos

アドインを最近インストールした場合は、アンインストールを検討してください。それは私のために働いたものです。

0
tstuts

ソリューションをクリーニングするか、プロジェクトをクリーニングしてください、これは私のために働いた

私も一度これに出くわしました。 VS 2015のTFSには何か問題があります。

私はこれらの手順に従いましたが、うまくいきました

  1. クリアされたTFSキャッシュこれは次のとおりです。

    C:\ Users \(ユーザー名)\ AppData\Local\Microsoft\Team Foundation \(バージョン)\ Cache

注:パスはオペレーティングシステムによって異なる場合があるため、私を責めないでください。

  1. 空のシンボルキャッシュ

    ツール>オプション>デバッグ>シンボル> EmptySymbolCache

  2. Visual Studioを再起動しました(TFSへの接続を再度要求する場合があります)

これは私のために働いた。:)

0
Maulik Modi

XamarinプロジェクトをVS15にインポートしているときに、この奇妙なバグが発生しました。ここにリストされたソリューションはどれも私にとってはうまくいきませんでした。フラストレーションの1日後、次のような問題にも遭遇しました。 Visual Studioの「検索」の結果、「検索するファイルが見つかりませんでした。停止した進行状況を検索します。」

検索ダイアログで「すべてを検索」をクリックすると、ポップアップが表示され、他のファイルを検索できないことが通知されました。そのため、「定義に移動」が機能しなかった理由は、同じファイル内の定義を検索しても機能したため、同じバグによるものだと考えました。

上記のリンクの奇妙な解決策(Ctrl + Scroll LockまたはCtrl + Breakを数回押す)は、両方の問題を解決しました。

コードの色付け(「Go to definition」機能が壊れたときに機能していなかった)もすぐに返されました。

0
Jake Walden

きれいなソリューション。 nugetパッケージを復元します。

0
ziaprog

私の問題は、問題のある.csファイルのプロパティBuild actionを(誤って)Contentに変更したことです。それをCompileに戻すと、うまくいきました。

0
okkko

私はVS 2017 15.7.5を使用していますが、これは特定のテストファイルで動作しなくなりました。それらはすべて最近追加した新しいものであり、ソリューションエクスプローラーではプロパティ/メソッドを展開して表示するための矢印が使用できないことに気付きました。

それらを除外し、プロジェクトに再組み込み、go to definitionコマンドが再び機能しました。

0
Liam

私も同じ問題に直面し、選択したクラスの「すべての参照を検索」でこの問題を解決しました。

0
Artem Ustimov