web-dev-qa-db-ja.com

VS 2015でコントローラーからビューを追加できない:「選択したコードジェネレーターの実行中にエラーが発生しました」

ASP.NETの世界では初めてのASP.NET Webを使用して、MVCで空のVisual Studio 2015アプリケーションを作成する必要があるビデオチュートリアルに従っています。段階的に。

プロジェクトをうまく作成し、次のステップで既存のControllerからビューを追加すると、次のメッセージボックスエラーが発生しました。

エラー:
選択したコードジェネレーターの実行中にエラーが発生しました: '無効なポインター(HRESULT:0x80004003(E_POINTER)からの例外)'

私は問題をGoogleで調べ、同様の問題を見つけましたが、明確な解決策はありませんでした、VisualStudioの前のバージョンで発行されたいくつかの同様の問題がありましたが、明確な解決策はありませんでした。

私が経験したことを明確にするために、ここで私がステップバイステップでやったことです:

ASP.NET Webアプリケーションの選択:

enter image description here

MVCがチェックされた空のテンプレートを選択:

enter image description here

コントローラーからAdd Viewを試してみました:

enter image description here

一部の設定...

enter image description here

エラー:

enter image description here

この問題の原因と解決策は何ですか?

更新:

ビューを手動で追加しようとしても同じエラーが発生しますが、ビューの追加はすべて不可能です!

27
AymenDaoudi

ComponentModelCacheをクリアしてみてください。VSが次回起動されたときにキャッシュが再構築されます。

  1. Visual Studioを閉じます
  2. このフォルダーC:\ Users \\ AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCacheのすべてを削除します
  3. Visual Studioを再起動します

14.0はVisual Studio 2015用です。これは他のバージョンでも機能します。

59
longday

通常の方法とは異なる方法でビューを追加するには、次の手順に従います。

  • 1)Visual Studioを開きます。
  • 2)プロジェクトを作成/開きます。
  • 3)ソリューションエクスプローラーに移動します。
  • 4)ターゲットフォルダを右クリックします。
  • 5)リストからAddを選択します。
  • 6)子リストから、-MVC View Page(Razor)またはMVC View Page with layout(Razor)を選択します。
  • 7)前の手順で2番目の選択肢を選択した場合は、ポップアップウィンドウからビューのレイアウトページを選択する必要があります。
  • 8)それだけです!

作成したビューを開くことができない場合は、ビューファイルを右クリックし、Open withを選択して、-HTML(webフォーム)エディターを選択します。

4
sh.alawneh

あなたがDLLでデータコンテキストを使用していると仮定してみましょう、それは私の場合であり、あなたが説明したのと同じエラーがある理由がわからないので、バックエンドプロジェクトでdatacontextLocalを作成して解決します。次に、Dbsetを正しいデータコンテキストに渡し、ローカルを削除します(必要に応じてそこに置くことができ、将来的に役立つ可能性があります

ローカルデータコンテキストで使用する準備ができている場合は、新しいものを作成し、Dbsetを正しいものに渡します

1
sGermosen

別のエラーメッセージ「-1は範囲外です。」でこの問題が発生しました。

私のために働いた唯一のことは、プロジェクトを右クリックして「削除」を選択して、ソリューションからプロジェクトを削除することでした。次に、ソリューション「Add Existing Project」を右クリックし、プロジェクトを選択してソリューションにリロードします。

プロジェクトをリロードした後、ビューを再度追加できるようになりました。

1
lucky.expert

同じエラーが発生しますが、VS 2017ではコントローラーを作成します。 @ sh.alawnehが書いたのと同じようにした。また、@ longdayが書いたことをやろうとしました。しかし、うまくいきませんでした。次に、別の方法で試します:

  • ターゲットフォルダーを右クリックします。
  • リストから、[追加] => [新しいアイテム]を選択します。

そこで、新しいコントローラーを選択しますが、正常に機能します。

たぶん私は誰かを助けます。

1
Maksym Labutin

誰かが興味を持っている場合に備えて-クリーンキャッシュを使用したソリューションはうまくいきませんでした。しかし、私は問題を解決できましたが、システム内のすべての.Netフレームワークをアンインストールしてから、それらを1つずつインストールし直しました。

0
Leonid

ComponentModelCacheをクリアしてみてください。

1. Visual Studioを閉じます

2.このフォルダーC:\ Users\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCacheのすべてを削除します

3. Visual Studioを再起動します

4.もう一度確認する

これはVS2017を使用してソリューションを取得しました

0
Deepak Savani

現在、MVC 4に慣れ親しんでいます。しばらくの間、MVC 5で開発を続けていますが、MCSD認定を取得するには、MVC 4を知る必要があります。私は、Pluralsightを介して、はるかに古いバージョンのEntity FrameworkとMVCを対象としたチュートリアルを行っています(ビデオは2013年にリリースされました!)

私は2時間前にまったく同じエラーに遭遇し、何が悪いのかを理解しようとして髪を引き裂いてきました。ありがたいことに、このチュートリアルのプロジェクトは無意味なので、プロセス全体をさかのぼって、オブジェクト参照が設定されていないエラーの原因を特定し、修正することができました。

私が見つけたのは、実際のソリューションの構造内のエラーです。

MVC Webプロジェクトをセットアップしました( 'ASP.NET Web Application(。NET Framework')、しかし私はまた、2つのクラスライブラリがあり、1つはデータアクセスレイヤーを保持し、もう1つはデータベースに接続するモデルのドメインセットアップを保持します。

これらは両方ともタイプ 'Class Library(-。NET Standard)でした。

MVCプロジェクトはこれを好まなかった。

タイプ 'Class Library(。NET Framework)'の新しいプロジェクトを作成し、古いファイルをすべてコピーしたらライブラリを新しいライブラリに追加し、MVC Webプロジェクトの参照を修正しました。再構築と再試行により、Viewを正しく足場にすることができました。

これは明らかな修正のように思えるかもしれません。NETStandardプロジェクトを.NET Frameworkプロジェクトと一緒に置いて正常に動作することを期待しないでください。しかし、他の人がこの問題を修正するのを助けるかもしれません!

0
IfElseTryCatch

C:\Users\{WindowsUser}\AppData\Local\Microsoft\VisualStudio\16.0_8183e7d1\ComponentModelCache

VS 2019のこのフォルダーから削除....

0
Farzad Sepehr

私もこれで頭を悩ませてきました。私のインスタンスで見つけたのは、Web.configファイルに追加のセクションが追加されたことです。これをコメントアウトして再構築すると問題が解決し、新しいコントローラーを追加できるようになりました。

0
Icementhols

ASP.NET Coreで、Microsoft.VisualStudio.Web.CodeGeneration.Tools nugetパッケージ。プロジェクトバージョンに対応しています。

0

コード生成が機能しなかった同様の問題に遭遇しました。どうやら、私のメタデータには不明なプロパティまたは値がありました。ここですべての答えを試したわけではありませんが、使用されている多数のNugetパッケージのいずれかを再インストールまたはダウンロードしたい人を認めなければなりません。

プロジェクトのクリーニングはうまくいきました(Build-> Clean Solution)ジェネレーターはいくつかの古いバイナリを使用してコントローラーとビューをビルドしていました。ソリューションをクリーニングすると、古いバイナリとボイラが削除されました。

0
user3416682

私の問題は、モデルクラスで使用されるタイプでした。

次のようなタイプを使用します。

    [NotMapped]
    [Display(Name = "Image")]
    public HttpPostedFileBase ImageUpload { get; set; }


    [NotMapped]
    [Display(Name = "Valid from")]
    public Nullable<DateTime> Valid { get; set; }


    [NotMapped]
    [Display(Name = "Expires")]
    public Nullable<DateTime> Expires { get; set; }

コードジェネレーターでは動作しなくなりました。これらのタイプとスキャフォールドを削除して、後で追加する必要がありました。

ばかげている、[NotMapped]足場のときに機能するために使用されます。

基本型を使用します:DateTime、List、HttpPostedFileBaseなどのような型なしで、int、string、byteなどを使用します。

0
Rusty Nail

私はちょうどビジュアルスタジオを再起動しましたが、うまくいきました。

0
Kurkula