web-dev-qa-db-ja.com

VS 2015 Razor Autocomplete / Intellisenseドロップダウンがドロップダウンの直後に非表示になる

VS 2015では、Razor(.cshtml)ファイルでのみ、約半分の時間、オートコンプリート/提案リスト/インテリセンスが正しく機能しません(申し訳ありませんが、実際の用語はわかりません...オブジェクトを入力して.を押すと、プロパティとメソッドのリストは、から選択することを示しています)

その振る舞いは、.を押すと、リストがほんの一瞬ポップアップして閉じます。それはとても速いので、Backspace.Backspace.のサイクルを数回繰り返して、少なくとも名前を確認しますI必要ですが、私は通常それを取得できず、コードから他の場所で正確な名前を見つける必要があります。非常にイライラする...

それは散発的に起こり、実際のパターンは見つかりません。ここに私が除外したパターンがあります:

  • 開いているファイルは重要ではないようです。
  • ファイルを閉じる/再度開くかどうかは問題ではないようです
  • 別のファイルに移動して戻るかどうかは重要ではないようです
  • 同じファイル全体で複数回オン/オフして機能する/機能しない
  • 特定のオブジェクト/プロパティ/メソッドに関連していないようです

私はすべてのオプションをチェックしました(Razorのテキスト編集オプションはないようです)。キャッシュのクリア、ソリューション/プロジェクトのリロード、VSの再起動を試みましたが、いずれもまだパターンを提供していないようです。

誰かがこれに遭遇し、それを修正するために他にどこを探すことができるかについて何か考えがありますか?

これは非常にシンプルな例です...新しいプロジェクト、非常に小さなコード/ファイル、非常にシンプルなビュー。 Model.が停止する場所には、通常の基本メソッドと 'Items'コレクションが必要です。それは一瞬ポップアップしてから消えます...ラムダ/複雑なビューの解析は含まれていません(これも再現可能です):

enter image description here

更新:パターン

私が気づいたこと:

  • @model ns.ns.ns.typeを入力している場合、名前空間の「ベース」の終わりに向かって発生することはほとんどありません。それが起こるのは、私がタイプに向かってさらに進んだときです。これは断続的です。
  • 場合によっては、毎回完全に正常に機能します。たとえば、私はよくDevExpressツールを使用しており、それらの拡張機能の動作を見たことがありません(したがって、@Html.DevExpress().(および他の同様の、必ずしもDevExモデルではない)は問題を引き起こしません)
  • 私が@Modelにアクセスしているとき、それはほとんどいつも起こります(私が最も欲しい場所です!)。これは毎回再現できる場合がありますが(上記の例を参照)、約90%以上です。
  • ときどき、オブジェクトツリーで作業していると、次の作業中にエラーが発生します(例:@models ProjName.Web.App.Subscriptions.Models.AccountCreateVM... Subscriptionsでは失敗するが、Modelsではうまく機能する場合があります)
  • ときどき、オートコンプリート内で名前を入力し始めると、それがギアに戻され、再び機能し始めます。上記の例では、AccAccountCreateVMを入力し始めると、再び機能し始めます。
43
jleach

根本的な原因はわかりませんが、すべてのケースでCTRL+SPACE機能します。これは最高ではありませんが、光年は何もないよりはましです。

(このショートカットは、私が以前に使用したものではないため、おそらく標準的な動作ですが...)ドットにいる場合Model.とオートコンプリートのリストが消えますCTRL + SPACEは常にリストを元に戻しますが、戻ってきたときは残ります!オートコンプリートメンバーが1つしかない場合は、メンバーのオートフィルが行われますCTRL + SPACEを押すと

21
jleach

これはラムダステートメントの間にVS2015全体で私に起こります。

コード「mid-document」を編集しているときに、入力している場所の後に)または}以外に何かがある場合に発生します。 VSは、現在のステートメントがどこで終わり、次のステートメントが始まるかを伝えるのに苦労しているようです。

次のコードは、明示的に呼び出された場合でも、その期間に一貫してIntellisenseをトリガーしません。

var subset = initialSet.Where(x => x.
var result = new Whatever();

Razorでは、既存のテキスト間でコードを編集し、ラムダステートメントを使用するのが非常に一般的です。

<strong>@Html.DisplayFor(m => m.</strong>

これがおそらく、Razorでのみこれを体験する理由です。

このバグを回避する方法は、)を記述してメソッドを閉じることです。

var subset = initialSet.Where(x => x.)
var result = new Whatever();

<strong>@Html.DisplayFor(m => m.)</strong>

その期間にIntellisenseをトリガーできます。

(RadioButtonForのように)ラムダ以上のものを必要とするメソッドを使用している場合は、追加のパラメータごとにカンマを挿入する必要もあります。

<strong>@Html.RadioButtonFor(m => m.,)</strong>

Intellisense isが表示されたが、すぐに再び表示されなくなった場合、これまでに見つけた最善の解決策は、既知のメンバーの数文字を入力し、Ctrl-Leftを使用してピリオドに戻ることです。 Intellisenseを再度トリガーします(Ctrl-Spaceまたはbackspace-retype)。これは通常、表示されたままになります。後で入力した文字を削除する必要があるため、イライラすることがあります。

20
friggle

_)_が編集中のテキストに触れないようにしてください。ポップアップが表示されたままになります。

の代わりに...

@Html.Partial("ManageGrid", Model.)

使用する...

@Html.Partial("ManageGrid", Model. )

括弧を閉じるとインテリセンスが混乱するようです。理想的ではありませんが、これが私に一貫して機能させる唯一の方法でした。

14
Carter Medlin

私の特定のケースでは、最新バージョンのMicrosoft ASP.NETとWebツールをインストールすることで問題を解決できました。

https://marketplace.visualstudio.com/items?itemName=JacquesEloff.MicrosoftASPNETandWebTools-9689

インストールしたら、問題はなくなりました。このアップデートにより、古いバージョンで修正できる可能性がある問題が修正された可能性がありますが、どちらにしても満足しています。

(これは、Visual Studioの[ツール]-> [拡張機能と更新...]-> [更新]-> [Visual Studioギャラリー]にあります)

4
Carter Medlin

同じエラーが発生し、コンポーネントモデルキャッシュのすべてのファイルを削除して修正しました。

これはパスです:

sers\YourName\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

それが役に立てば幸い

3
tocqueville

コンテンツがわかっている場合は、一時的な解決策としてctrl + jを使用します。

または、右括弧なしで書き続けると、補完を使用できます。

@ Html.LabelFor(m => m.Name

1
lgt945