web-dev-qa-db-fra.com

La vue ne s'actualise pas après le changement

J'ai ce problème frustrant. Je change le texte dans une vue rasante (cshtml), Start without Debugging, actualise (Ctrl + F5) le navigateur, mais rien ne se passe. La partie étrange est que si je modifie la valeur de retour d'un contrôleur (par exemple, return Ok("test");) ou un fichier statique inclus (comme CSS), le changement est visible. La vue rasoir ne se met à jour que si j'arrête de démarrer et d'arrête le débogage à chaque fois.

Voici les choses que j'ai déjà essayées:

  • Assurez-vous que Detect when file is changed outside the environment est coché.
  • On run, when projects are out of date est Always build.
  • Essayé cela sur Edge, Chrome et Firefox avec et sans rafraîchissement dur.
  • Redémarrage des temps numériques Visual Studio.
  • Solution de nettoyage/reconstruction.
  • Faire cela sur les nouveaux projets de modèles.

P.S. Je vois qu'il y a beaucoup de questions similaires, mais aucune des réponses ne semble résoudre mon problème.

Mettre à jour

Cela semble être un problème à une échelle beaucoup plus grande. Si je:

  1. Créez une section de rasoir requise dans la vue parent telle que celle-ci @RenderSection("css", required: true).
  2. Ne pas implémenter le rendu dans la vue enfant.
  3. Je reçois (évidemment) le InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla\bla\bla':css.
  4. Ensuite, je l'implémente.
  5. Enregistrer, Ctrl + F5 dans Firefox. L'erreur persiste.

À ce stade, VS 2015 est pratiquement inutilisable, car vous ne savez pas si quelque chose vous manque ou s'il passe à l'acte.

11
Crossfire

J’avais eu ce problème auparavant… .. Mon cas était sous Windows 10 VM parallèle sur Macbook Pro, et les fichiers du projet se trouvaient dans un dossier partagé avec Mac OS.

Si quelqu'un a le même cas que moi, déplacez le projet dans un répertoire non partagé tel que C:\corrigera le problème.

12
dexcell

vérifiez votre web.config et assurez-vous de ne pas avoir fcnMode="Disabled" ou fcnMode="NotSet"

utilisation 

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

ou

<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
  • Default Pour chaque sous-répertoire, l'application crée un objet qui surveille le sous-répertoire. Ceci est le comportement par défaut.
  • Disabled La notification de modification de fichier est désactivée.
  • NotSet La notification de modification de fichier n'étant pas définie, l'application crée un objet qui surveille chaque sous-répertoire. C'est la valeur par défaut comportement.
  • Single L'application crée un objet pour surveiller le répertoire principal et utilise cet objet pour surveiller chaque sous-répertoire.

Énumération FcnMode

4
Moes

Voici ce qui semble se passer sous le capot: le framework .net compile votre rasoir en une machine-forme (DLL) et l'exécute. Il surveille ensuite votre dossier Web pour surveiller les modifications et, lorsqu'il détecte les modifications, il recompile votre rasoir et exécute la nouvelle DLL.

Dans votre cas, quelque chose semble échouer en raison des modifications apportées au fichier de surveillance. Il fonctionne toujours au redémarrage complet, car la compilation se produit alors même sans détection de changement de fichier. Les raisons communes sont:

  1. Vous envoyez les fichiers depuis le réseau (un NAS ou un partage de fichiers), ce qui ne permet pas à votre ordinateur de surveiller les modifications. Cela peut être une fonctionnalité manquante (comme un partage de fichier non SMB) ou un problème d'autorisation. Ceci est très courant dans les scénarios de batterie de serveurs Web, mais probablement pas dans votre scénario de développement.
  2. Quelque chose d'autre est déjà en train de verrouiller les fichiers (autorisations?), Ce qui empêche ce crochet de surveillance de rester sur les fichiers.

Pour confirmer que c'est bien le problème, je vous recommande de modifier le fichier web.config (ajouter/supprimer un caractère) et de voir si le rechargement a réussi - il suffit de prouver qu'il s'agit d'un problème de recompilation et non d'un problème de débogage de visual-studio. . En supposant que ce soit le cas, et en supposant que ce ne soit pas un NAS, je vous conseillerais de donner temporairement au dossier une autorisation "Tout le monde - Tout" pour voir si cela fonctionne ensuite, puis de réduire progressivement les autorisations à l'endroit souhaité. 

4
iJungleBoy

Si vous utilisez un Mac utilisant un Parallels WM et que votre projet se trouve sur votre Mac-volume, vous pouvez résoudre ce problème en utilisant chmod.

chmod -R 777 *
2
Janus Kamp Hansen

Je viens d'avoir le même problème. Après avoir longtemps débogué et essayé presque tout, nous avons découvert que quelqu'un avait déplacé le fichier d'un dossier à un autre dans Visual Studio et l'avait enregistré dans TFS. Le fichier de projet a donc été mis à jour mais le fichier d'origine existait toujours sur le disque. Ainsi, mon IIS local a rendu l'ancien fichier et non le nouveau fichier au nouvel emplacement.

C'était frustrant, oui.

0
VeldMuijz