web-dev-qa-db-ja.com

変更後にビューが更新されない

私はこのイライラする問題を抱えています。かみそりビュー(cshtml)、_Start without Debugging_でテキストを変更し、ブラウザーを更新(Ctrl + F5)しましたが、何も起こりません。奇妙なのは、コントローラーの戻り値(たとえばreturn Ok("test");)または含まれている静的ファイル(CSSなど)を変更した場合、更新すると変更が表示されることです。かみそりビューは、毎回起動を停止してデバッグを停止した場合にのみ更新されます。

これが私がすでに試したことです:

  • _Detect when file is changed outside the environment_がチェックされていることを確認しました。
  • _On run, when projects are out of date_は_Always build_です。
  • Edge、Chrome、Firefoxでハードリフレッシュあり/なしで試してみました。
  • Visual Studioを数回再起動します。
  • 洗浄/再構築ソリューション。
  • 新しいテンプレートプロジェクトでこれを行う。

追伸同様の質問がたくさんあるようですが、どれも私の問題を解決していないようです。

更新

これは、はるかに大規模な問題であると思われます。もし私が:

  1. この@RenderSection("css", required: true)のように、必要なかみそりセクションを親ビューに作成します。
  2. 子ビューにレンダリングを実装しません。
  3. (明らかに)_InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla\bla\bla':css_を取得します。
  4. 次に、それを実装します。
  5. 保存、FirefoxではCtrl + F5。エラーが解決しない。

この時点では、VS 2015は、実際に何かが足りないのか、それともVSが機能しているかがわからないため、実質的に使用できません。

17
Crossfire

以前にこの問題がありました。私の場合は、windows 10を実行していたVM Macbook ProではParallel、プロジェクトファイルはMac OSの共有フォルダーにあります。

誰かが私のような同じケースを持っている場合は、プロジェクトをC:\などの非共有ディレクトリに移動すると、問題が解決します。

14
dexcell

web.configを確認し、fcnMode="Disabled"またはfcnMode="NotSet"がないことを確認してください

使用する

<httpRuntime targetFramework="4.5.2" fcnMode="Default" />

または

<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
  • Default各サブディレクトリについて、アプリケーションはサブディレクトリを監視するオブジェクトを作成します。これがデフォルトの動作です。
  • Disabledファイル変更通知が無効になっています。
  • NotSetファイル変更通知が設定されていないため、アプリケーションは各サブディレクトリを監視するオブジェクトを作成します。これがデフォルトの動作です。
  • Singleアプリケーションは、メインディレクトリを監視する1つのオブジェクトを作成し、このオブジェクトを使用して各サブディレクトリを監視します。

FcnMode列挙

5
Nerdroid

これは内部で起こっているようです:.netフレームワークはかみそりをマシン形式(DLL)にコンパイルし、これを実行します。次に、Webフォルダーを監視して変更を監視し、変更を検出すると、かみそりを再コンパイルして新しいDLLを実行します。

あなたの場合、監視ファイルの変更に関連して何かが失敗したようです。ファイルの変更を検出しなくてもコンパイルが行われるため、完全に再起動しても機能します。一般的な理由は次のとおりです。

  1. PCが変更を監視できないネットワーク(NASまたはファイル共有)からファイルを提供しています。これは、不足している機能(SMB以外のファイル共有など)または権限の問題である可能性があります。これはWebファームのシナリオでは非常に一般的ですが、おそらく開発シナリオではありません。
  2. 他の何かがすでにファイルをロックしています(許可?)。これにより、この監視フックがファイルを保持できなくなります。

これが問題であることを確認するには、web.config(文字の追加/削除)を編集して、リロードが成功するかどうかを確認することをお勧めします。ビジュアルスタジオデバッグの問題ではなく、再コンパイルの問題であることを証明するためです。これが当てはまると想定し、NASではない場合は、一時的に「全員-すべて」のアクセス許可を与えて、それが機能するかどうかを確認し、その後、アクセス許可を必要な場所に徐々に減らします。

5
iJungleBoy

Parallels WMを使用してMacで実行していて、プロジェクトがMacボリュームにある場合、chmodを使用してこれを解決できます。

chmod -R 777 *
1

ちょうど同じ問題がありました。長い間デバッグしてほとんどすべてを試した後、誰かがVisual Studioのあるフォルダーから別のフォルダーにファイルを移動し、それをTFSにチェックインしたことがわかりました。したがって、プロジェクトファイルは更新されましたが、元のファイルはまだディスク上に存在していました。したがって、私のローカルIISは、新しい場所に新しいファイルではなく、古いファイルをレンダリングしました。

はい、これはイライラさせられました。

1
VeldMuijz

この問題を解決するには2つの方法があります。

1。 .slnファイルが存在するフォルダーのアクセス許可を確認してください。IIS高速サーバーが実行中の場合、反映するには、Visual Studioがファイルにアクセスできないため、ファイルアクセス許可に問題がある可能性があります。サーバーを再起動する必要があるたびに新しい.cshtmlが変更されるため、次の方法でフォルダーのアクセス許可を編集することをお勧めします。

フォルダを右クリック->プロパティ->セキュリティ->編集ボタンをクリック->すべてのオプションをチェック->保存

Visual Studioを再起動して変更を確認します。

これが機能しない場合は、2つのオプションを使用します。

2startup.csファイルのプロジェクトで、これを以下の行に追加しますConfigureServices()メソッド内:

services.AddMvc()。AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);

1
Omkar Nevase