412 votes

Comment forcer Visual Studio à régénérer les fichiers .designer pour les fichiers aspx/ascx ?

Parfois, lorsque je modifie une page ou un contrôle, les fichiers .designer ne sont plus mis à jour avec les nouveaux contrôles que je place sur la page. Je ne suis pas sûr de la cause de ce phénomène, mais je me demande s'il existe un moyen de forcer Visual Studio à régénérer le fichier .designer. J'utilise Visual Studio 2008

EDIT : Désolé, j'aurais dû préciser que j'ai déjà essayé :

  • Fermeture et réouverture de tous les fichiers et de Visual Studio.
  • Modification d'un contrôle runat="server" sur la page
  • Suppression et réinsertion de la directive "page".

61 votes

N'est-il pas ridicule qu'en 2012, Visual Studio ne dispose toujours pas d'un élément de menu contextuel permettant de régénérer les fichiers de conception à partir des fichiers sources ? C'est comme si on ne pouvait pas reconstruire une DLL corrompue. Je ne comprends pas. Surtout avec un contrôle de source externe et des éditeurs externes, vous laissez Visual Studio paralysé. Un gaspillage d'argent, si vous me demandez. Je suis en fait en train d'essayer de régénérer les concepteurs de fichiers de ressources. J'ai réussi à obtenir modifier il s'est régénéré, mais c'est par l'obscurité... Augh!!!1

3 votes

@bamccaig, si j'avais un centime pour chaque "fonctionnalité" bizarre comme celle-ci, je serais plus riche que Bill Gates. Si vous pensez que c'est mauvais, regardez où Outlook Express stocke ses données de courrier. Elles sont enfouies dans le dossier de l'utilisateur sous un nom de dossier cryptique qui est caché par défaut.

14 votes

Existe-t-il une solution pour VS 2015 ?

379voto

Espo Points 24318

Si vous ouvrez le fichier .aspx et passez de la vue design à la vue html et vice-versa, VS vérifiera les contrôles et ajoutera ceux qui manquent. html et inversement, VS sera invité à vérifier les contrôles et à ajouter ceux qui manquent au le fichier de conception.

Dans VS2013-15, il existe un Convertir en application Web sous la commande Projet menu. Avant VS2013, cette option était disponible dans le menu contextuel du clic droit pour les fichiers as(c/p)x. Lorsque cela est fait, vous devriez voir que vous avez maintenant un fichier *.Designer.cs disponible et vos contrôles dans le Design HTML seront disponibles pour votre contrôle.

PS : Ceci ne doit pas être fait en mode débogage, car tout n'est pas "recompilé" lors du débogage.

Certaines personnes ont également déclaré avoir réussi en faisant une copie de sauvegarde de leur fichier .designer.cs, puis en supprimant le fichier .designer.cs. Recréez un fichier vide avec le même nom.

Il y a de nombreux commentaires à cette réponse qui ajoutent des conseils sur la meilleure façon de recréer le fichier designer.cs.

1 votes

Cela n'a fonctionné pour moi qu'après avoir fermé toutes les instances (même celles avec des solutions totalement différentes) de VS2008.

11 votes

J'ai découvert que le passage du mode débogage au mode version a fait l'affaire pour moi.

0 votes

Je copiais des fichiers d'un site web vers une application web et "convertir en application web" l'a fait pour moi. Merci !

98voto

Glenn Slaven Points 15742

J'ai trouvé une solution qui fonctionne, même si elle ne me plaît pas vraiment. J'ai dû supprimer le fichier .designer.cs puis recréer un fichier vide avec le même nom. Lorsque je suis revenu en arrière et que j'ai à nouveau enregistré le fichier aspx, le fichier designer était à nouveau généré.

Dodgy !

3 votes

Ça a marché pour moi aussi. Pas idéal. Aucune idée de la raison pour laquelle le fichier desginer original a cessé de se mettre à jour correctement.

3 votes

Cela n'a pas fonctionné pour moi. Maintenant j'ai un fichier vide et tout le code derrière ne fonctionne pas ! !! Redémarrage...

7 votes

Ça a marché pour moi. Je me suis assuré de supprimer l'original, de créer un nouveau fichier designer.cs avec le même nom, de fermer le nouveau fichier, de modifier légèrement le fichier .as(p/c)x pour forcer une sauvegarde, et tout s'est bien passé.

81voto

Ruvan Fernando Points 150

J'utilise la méthode suivante qui fonctionne à chaque fois :

  • Sélectionnez tous les code-in-front (balises html etc) dans l'éditeur du fichier aspx/ascx.
  • Coupez.
  • Économisez.
  • Pâte.
  • Économisez.

Recompilez.

2 votes

Je pense que le fait de supprimer un seul contrôle et de le réinsérer a le même effet.

0 votes

J'ai fait cela et cela a fonctionné pour moi. Cependant, j'ai dû créer un fichier vide appelé <name>.aspx.designer.vb pour le faire fonctionner

65voto

Geoff Points 71

J'ai vu récemment que j'avais le même problème. Visual Studio 2010 refusait de mettre à jour le fichier du concepteur.

Il s'avère que VS ne modifie pas le fichier du concepteur pour une page qui utilise CodeFile (exécuté sur les pages) au lieu de CodeBehind (DLL). Ceci est vrai quel que soit le nombre de fois où vous fermez VS, rechargez le projet, recréez le(s) contrôle(s), ou modifiez un fichier. Rien n'incite VS à régénérer le concepteur. C'est comme s'il ne créait pas le fichier du concepteur pour les pages CodeFile mais qu'il exigeait qu'il soit là.

Je l'ai changé en CodeBehind et j'ai enregistré la page. Le fichier du concepteur a été mis à jour immédiatement. Ensuite, je l'ai juste changé à nouveau et tout était encore en or. Ce comportement semble être nouveau avec VS 2010 / .NET 4.0 car VS 2008 par défaut ne souffrait pas de cela.

C'est cette partie :

<%@ Page Language="vb" AutoEventWireup="false" CodeFile="YourPage.aspx.vb" Inherits="YourPageClass" %>

Remplacez CodeFile par CodeBehind, enregistrez, puis revenez en arrière.

0 votes

Je suis en retard sur ce fil. Aucune des réponses décrites ci-dessus ne force les contrôles à être listés dans le fichier *.aspx.designer.cs. J'espérais que celle-ci le ferait, mais elle ne force toujours pas les contrôles à être déclarés dans le fichier *.aspx.designer.cs. J'utilise VS 2010 Pro SP1. J'essaie de faire en sorte que cela fonctionne avec n'importe lequel des fichiers par défaut que l'IDE génère dans /Account comme ChangePassword.aspx. Merci.

1 votes

Le mien était réglé sur CodeFile, j'ai changé pour CodeBehind, j'ai enregistré, je suis revenu à CodeFile, j'ai enregistré, tout est en or. Les tentatives précédentes de correction n'ont pas fonctionné pour moi. VS 2010 Pro

38voto

y0mbo Points 2268

Il y a une autre possibilité : Il se peut qu'une erreur dans votre fichier .aspx ne permette pas à Visual Studio de régénérer le concepteur.

Si vous passez à la vue de conception, le contrôle sera affiché comme ne pouvant pas être rendu. La correction du contrôle (dans mon cas, il s'agissait d'une citation supplémentaire dans les propriétés) et la recompilation devraient régénérer le concepteur.

0 votes

J'ai eu le même problème, le contrôle de l'utilisateur avait des erreurs et les pages qui utilisent le contrôle de l'utilisateur avaient des erreurs non liées à cause des erreurs dans le contrôle de l'utilisateur.

1 votes

Même cause. J'avais un attribut non pris en charge visible="false" ajouté à un bouton asp. Je l'ai supprimé et le code du concepteur a été re-généré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X