今日、私のプロジェクトで突然[Go To Definition]をクリックすると、「キャレットの下のシンボルに移動できません」という奇妙なエラーが発生する問題が発生し始めました。
NuGetを使用して Costura.Fody をインストールしてからしばらくして、最初に気付きました。その後アンインストールしましたが、問題は解決しません。ソリューションを複数回クリーニングおよび再構築しました。これが発生し始めた時点の前後の私のgitコミット履歴のどこにも「Fody」または「Costura」のインスタンスがないため、.gitignoreされたファイルの1つが不良でスタックしていると考えています状態。
問題は、対象となる定義が別のファイルにある場合にのみ発生します。現在開いているファイル内の何かの定義へ移動が正常に機能します。 Peek Definitionも正常に機能します。他のソリューション/プロジェクトも同様にうまく機能します-問題を引き起こしているのはこれだけです。
Visual Studio 2015を使用しています。この問題は2013バージョンでは発生していないようです。
このエラーが発生する理由と修正方法を教えてください。
このエラーが発生している最後の数日、少なくとも1日に2回..本当に迷惑です!ここで提案した解決策はどれも私にとってはうまくいきませんでした。私が見つけたのは、見つけるのが非常に困難だったので、ここに書き留めています。
免責事項:Xamarinを使用しています
@ OzSolomonと@xCasperが言ったことを考慮に入れる:
しゅう
これにより、インストールされているプラグインを含むIDEカスタマイズの多くがリセットされます。
/resetuserdataを使用する前に、それに満足していることを確認してください
@xCasper
ただし、Microsoftを介して設定を同期している場合、ほとんどの設定は元に戻ります。キーバインドが復元されず、デフォルトに戻ったように見えるので、私が最も言っています。選択したテーマや色付けの選択、IDEのレイアウト(たとえばタブがある場所)、および戻って来ないように見えるものなど、その他すべて。
同じ問題が発生しました。上記のすべてのコメントに記載されているすべての手順を実行しました。うまくいきませんでした。しかし、Visual Studioを閉じたときに(ソリューションフォルダー内の) ".vs"フォルダーを削除してから、Visual Studioを再度開きました。今では魔法のように機能します。問題はなくなりました。
デビッドのソリューション(空のシンボルキャッシュオプションをクリックする方法)を試しましたが、うまくいきませんでした。
どのように解決しましたか?
私にとってこのエラーは意味がありませんが、これを解決しました!
同じ問題が発生したばかりで、VS 2015とTFSに問題があるようです。いくつかのファイルを別のブランチにマージした後、問題が発生しました。いくつかのことを試してみましたが、うまくいきました:
なぜそれが起こるのかは分かりませんが、これは私にとってはうまくいきました。zviで言及されているように、TFSTempフォルダーをクリアする価値があるかもしれません。
編集
このパス:%TMP%\TFSTemp
をWindowsエクスプローラーにコピーアンドペーストしてTFS tempにアクセスできます
以下は私のためにこれを修正しました:
これが正常に完了した後、エラーを受信しなくなり、何かを閉じて再度開く必要がなくなりました。
早くやれよ:
キャッシュシンボルを消去します([ツール]> [オプション]> [デバッグ]> [シンボル]> [EmptySymbolCache])。ソリューションを管理モードで開きます。
これで問題が解決しました。
上記の答えは正しいですが、パスは少しずれています。代わりにこれを試してください:
%AppData%\..\Local\Temp\TFSTemp
上記のすべてを実行しましたが、私の問題は解決しませんでした(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パッケージを更新することでした。
F12を使用してメソッド定義に移動しようとすると、この問題が発生します。
言及されたすべての項目(/resetuserdata
を除く-回復するのが苦痛になるため、試しませんでした)は機能しませんでした。
私のために働いたもの:
コマンドプロンプトから、ソリューションのフォルダーに移動し、次のコードを実行します(これにより、ソリューション内のすべての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
ファイルと一緒に配置します。これにより、後で簡単に実行できます!
Visual Studioを更新した後も同じ問題が発生するので、これが問題の解決方法です。
これがこの問題を抱えている人に役立つことを願っています。
最近VS 2017 15.5.0にアップグレードし、この問題に遭遇しました。私は試した:
悲しいことに、これらのどれも機能しませんでした。これは一部のプロジェクトでのみ発生し、他のプロジェクトでは発生していないことに気付きました。失敗していたプロジェクトでは、すべてのフレームワークバージョンを4.7.1に切り替え、クリーン/リビルドを実行し、「Go to Definition」が再び機能し始めました。
Visual Studioを閉じて、そのプロジェクトの非表示のファイル名.vsを削除し、Visual Studioを再度開いてプロジェクトをビルドします。ブーム!いいね!
他の人によって送信されたパスのほとんどは、機能しないか、少し後方にあります。
このフォルダーを空にします。
%localappdata%\Temp\TFSTemp
これは私のために働いた。
これは新しいRoslyn C#コンパイラによるものだと思います。githubissue trackerで実際の開発者の多くがこれに遭遇して修正しようとしていますが、現在はまだ開いています: https:/ /github.com/dotnet/roslyn/issues/9602
私もこれにしばらく時間を費やしましたが、戦いに負けました。しかし、次の回避策は私にとってうまくいくことを発見しました。
回避策
私にとっては、単にGoToDefinitionよりも優れているようです。
この特定の問題がroslynコンパイラで修正されたことを読んだ後( GitHubでこの問題を参照 )、IVisual Studioを更新しましたバージョン15.0.xから15.3.1まで。今では魅力のように機能します。
私にとって、ナビゲートはXAMARINソリューションなしで動作します。その提案はここではありません。 :( Devenv.exe/resetuserdataが機能しません。
私の解決策は、ソリューション、プロジェクト、フォルダー、および作品を再作成することでした。インポートなし。詳細:私のプロジェクトはVS 2015にあり、エラーはVS 2017にありました。
私はこのエラーをもうしばらくとることができなくなるまでかなり長い間持っていたので、上記のすべての可能な解決策を試しましたが、うまくいきませんでした。エラーは、特定のプロジェクト(上記のような)でのみ表示され、他のプロジェクトでは表示されないことに気付きました。そのため、何も機能していないため、プロジェクトを別のフォルダーに再度複製し、再び機能し始めました。
「devenv.exe/resetuserdata」を実行した後、私のVAssistXは失敗するため、実際、これはVAssistXはGoto Implementation(Alt + G)によって問題を解決できることを思い出させます。
以下は私にとって魅力的なものでした:
アドインを最近インストールした場合は、アンインストールを検討してください。それは私のために働いたものです。
ソリューションをクリーニングするか、プロジェクトをクリーニングしてください、これは私のために働いた
私も一度これに出くわしました。 VS 2015のTFSには何か問題があります。
私はこれらの手順に従いましたが、うまくいきました
クリアされたTFSキャッシュこれは次のとおりです。
C:\ Users \(ユーザー名)\ AppData\Local\Microsoft\Team Foundation \(バージョン)\ Cache
注:パスはオペレーティングシステムによって異なる場合があるため、私を責めないでください。
空のシンボルキャッシュ
ツール>オプション>デバッグ>シンボル> EmptySymbolCache
Visual Studioを再起動しました(TFSへの接続を再度要求する場合があります)
これは私のために働いた。:)
XamarinプロジェクトをVS15にインポートしているときに、この奇妙なバグが発生しました。ここにリストされたソリューションはどれも私にとってはうまくいきませんでした。フラストレーションの1日後、次のような問題にも遭遇しました。 Visual Studioの「検索」の結果、「検索するファイルが見つかりませんでした。停止した進行状況を検索します。」
検索ダイアログで「すべてを検索」をクリックすると、ポップアップが表示され、他のファイルを検索できないことが通知されました。そのため、「定義に移動」が機能しなかった理由は、同じファイル内の定義を検索しても機能したため、同じバグによるものだと考えました。
上記のリンクの奇妙な解決策(Ctrl + Scroll LockまたはCtrl + Breakを数回押す)は、両方の問題を解決しました。
コードの色付け(「Go to definition」機能が壊れたときに機能していなかった)もすぐに返されました。
きれいなソリューション。 nugetパッケージを復元します。
私の問題は、問題のある.csファイルのプロパティBuild action
を(誤って)Content
に変更したことです。それをCompile
に戻すと、うまくいきました。
私はVS 2017 15.7.5を使用していますが、これは特定のテストファイルで動作しなくなりました。それらはすべて最近追加した新しいものであり、ソリューションエクスプローラーではプロパティ/メソッドを展開して表示するための矢印が使用できないことに気付きました。
それらを除外し、プロジェクトに再組み込み、go to definitionコマンドが再び機能しました。
私も同じ問題に直面し、選択したクラスの「すべての参照を検索」でこの問題を解決しました。