ASP.NETの世界では初めてのASP.NET Web
を使用して、MVC
で空のVisual Studio 2015
アプリケーションを作成する必要があるビデオチュートリアルに従っています。段階的に。
プロジェクトをうまく作成し、次のステップで既存のController
からビューを追加すると、次のメッセージボックスエラーが発生しました。
エラー:
選択したコードジェネレーターの実行中にエラーが発生しました: '無効なポインター(HRESULT:0x80004003(E_POINTER)からの例外)'
私は問題をGoogleで調べ、同様の問題を見つけましたが、明確な解決策はありませんでした、VisualStudioの前のバージョンで発行されたいくつかの同様の問題がありましたが、明確な解決策はありませんでした。
私が経験したことを明確にするために、ここで私がステップバイステップでやったことです:
ASP.NET Webアプリケーションの選択:
MVCがチェックされた空のテンプレートを選択:
コントローラーからAdd View
を試してみました:
一部の設定...
エラー:
この問題の原因と解決策は何ですか?
更新:
ビューを手動で追加しようとしても同じエラーが発生しますが、ビューの追加はすべて不可能です!
ComponentModelCacheをクリアしてみてください。VSが次回起動されたときにキャッシュが再構築されます。
14.0はVisual Studio 2015用です。これは他のバージョンでも機能します。
通常の方法とは異なる方法でビューを追加するには、次の手順に従います。
作成したビューを開くことができない場合は、ビューファイルを右クリックし、Open withを選択して、-HTML(webフォーム)エディターを選択します。
あなたがDLLでデータコンテキストを使用していると仮定してみましょう、それは私の場合であり、あなたが説明したのと同じエラーがある理由がわからないので、バックエンドプロジェクトでdatacontextLocalを作成して解決します。次に、Dbsetを正しいデータコンテキストに渡し、ローカルを削除します(必要に応じてそこに置くことができ、将来的に役立つ可能性があります
ローカルデータコンテキストで使用する準備ができている場合は、新しいものを作成し、Dbsetを正しいものに渡します
別のエラーメッセージ「-1は範囲外です。」でこの問題が発生しました。
私のために働いた唯一のことは、プロジェクトを右クリックして「削除」を選択して、ソリューションからプロジェクトを削除することでした。次に、ソリューション「Add Existing Project」を右クリックし、プロジェクトを選択してソリューションにリロードします。
プロジェクトをリロードした後、ビューを再度追加できるようになりました。
同じエラーが発生しますが、VS 2017ではコントローラーを作成します。 @ sh.alawnehが書いたのと同じようにした。また、@ longdayが書いたことをやろうとしました。しかし、うまくいきませんでした。次に、別の方法で試します:
そこで、新しいコントローラーを選択しますが、正常に機能します。
たぶん私は誰かを助けます。
誰かが興味を持っている場合に備えて-クリーンキャッシュを使用したソリューションはうまくいきませんでした。しかし、私は問題を解決できましたが、システム内のすべての.Netフレームワークをアンインストールしてから、それらを1つずつインストールし直しました。
ComponentModelCacheをクリアしてみてください。
1. Visual Studioを閉じます
2.このフォルダーC:\ Users\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCacheのすべてを削除します
3. Visual Studioを再起動します
4.もう一度確認する
これはVS2017を使用してソリューションを取得しました
現在、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プロジェクトと一緒に置いて正常に動作することを期待しないでください。しかし、他の人がこの問題を修正するのを助けるかもしれません!
C:\Users\{WindowsUser}\AppData\Local\Microsoft\VisualStudio\16.0_8183e7d1\ComponentModelCache
VS 2019のこのフォルダーから削除....
私もこれで頭を悩ませてきました。私のインスタンスで見つけたのは、Web.configファイルに追加のセクションが追加されたことです。これをコメントアウトして再構築すると問題が解決し、新しいコントローラーを追加できるようになりました。
ASP.NET Coreで、Microsoft.VisualStudio.Web.CodeGeneration.Tools
nugetパッケージ。プロジェクトバージョンに対応しています。
コード生成が機能しなかった同様の問題に遭遇しました。どうやら、私のメタデータには不明なプロパティまたは値がありました。ここですべての答えを試したわけではありませんが、使用されている多数のNugetパッケージのいずれかを再インストールまたはダウンロードしたい人を認めなければなりません。
プロジェクトのクリーニングはうまくいきました(Build-> Clean Solution)ジェネレーターはいくつかの古いバイナリを使用してコントローラーとビューをビルドしていました。ソリューションをクリーニングすると、古いバイナリとボイラが削除されました。
私の問題は、モデルクラスで使用されるタイプでした。
次のようなタイプを使用します。
[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などを使用します。
私はちょうどビジュアルスタジオを再起動しましたが、うまくいきました。