Parfois, lorsque je modifie une page ou contrôle les fichiers .designer cessent d'être mis à jour avec les nouveaux contrôles que je mets sur la page. Je ne sais pas ce qui provoque cela, 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û noter que j'ai déjà essayé:
- Fermer et rouvrir tous les fichiers et Visual Studio
- Modification d'un contrôle runat = "server" sur la page
- Supprimer et rajouter la directive page
asp.net
visual-studio
visual-studio-2008
Glenn Slaven
la source
la source
<%@ Page
ligne de directive; 3. Attendez une seconde ou deux; 4. Remettez le ">". 5. Basculez vers le fichier .cs et vous verrez qu'il est maintenant exempt d'erreurs de référence de contrôle. Je fais cela depuis des lustres maintenant, fonctionne à chaque fois, dans chaque version VS.Réponses:
Si vous ouvrez le fichier .aspx et basculez entre la vue de conception et la vue html, cela invitera VS à vérifier les contrôles et à ajouter ceux qui manquent au fichier de concepteur.
Dans VS2013-15, il existe une commande Convertir en application Web dans le menu Projet . Avant VS2013, cette option était disponible dans le menu contextuel du clic droit pour les fichiers (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 HTML de conception seront disponibles pour votre contrôle.
PS: Cela ne devrait pas être fait en mode débogage, car tout n'est pas "recompilé" lors du débogage.
Certaines personnes ont également signalé leur réussite en (effectuant une copie de sauvegarde de votre fichier .designer.cs, puis) en supprimant le fichier .designer.cs. Recréez un fichier vide avec le même nom.
Cette réponse contient de nombreux commentaires qui ajoutent des conseils sur la meilleure façon de recréer le fichier designer.cs.
la source
Eh bien, j'ai trouvé une solution qui fonctionne, même si je ne l'aime pas vraiment. J'ai dû supprimer le fichier .designer.cs puis recréer un fichier vide du même nom. Lorsque je suis revenu et que j'ai à nouveau enregistré le fichier aspx, le fichier de concepteur a été recréé.
Épineux!
la source
J'utilise la méthode suivante qui fonctionne à chaque fois:
Recompilez.
la source
<name>.aspx.designer.vb
pour le faire fonctionnerJ'ai récemment vu 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 de concepteur pour une page qui utilise CodeFile (exécuter hors des pages) au lieu de CodeBehind (DLL). Cela est vrai quel que soit le nombre de fois que vous fermez VS, rechargez le projet, recréez le ou les contrôles ou modifiez un fichier. Rien n'inciterait VS à régénérer le concepteur. C'est comme s'il ne crée pas le fichier de concepteur pour les pages CodeFile mais qu'il nécessite qu'il y soit.
Je l'ai changé en CodeBehind et enregistré la page. Le fichier de concepteur a été mis à jour immédiatement. Ensuite, je l'ai juste changé en arrière et tout était encore doré. Ce comportement semble être nouveau avec VS 2010 / .NET 4.0 car VS 2008 par défaut n'en souffre pas.
C'est cette partie:
Modifiez CodeFile en CodeBehind, enregistrez et puis revenez.
la source
Il existe une autre possibilité: vous pouvez avoir une erreur dans votre fichier .aspx qui ne permet pas à Visual Studio de régénérer le concepteur.
Si vous passez en mode Création, le contrôle ne pourra pas être rendu. La correction du contrôle (dans mon cas, c'était une citation supplémentaire dans les propriétés) et la recompilation devraient régénérer le concepteur.
la source
La plupart des solutions ici ne fonctionnent pas si vous exécutez Visual Studio 2013 et éventuellement 2012. Microsoft a probablement introduit certaines optimisations pour rendre l'IDE plus rapide, par conséquent, elles ont réduit le nombre de cas qui déclenchent le générateur de code. Les scénarios suivants qui fonctionnaient autrefois ne fonctionnent plus:
La solution est étonnamment simple, mais elle est un peu lourde. Afin de déclencher le générateur de code, changez quelque chose qui nécessiterait la génération de designer.aspx.cs. Changer le contenu qui n'affecte pas le code, comme un style CSS ou ajouter du texte, ne déclenchera pas le générateur de code. Vous devez modifier un contrôle référencé. Voici comment procéder:
Dans l'ascx ou aspx, changez l'ID du contrôle
à
Accédez à ascx.cs ou aspx.cs et assurez-vous de renommer toutes les références à "MyLink" en "theLINK" également. Enregistrez et faites la construction et vous devriez être prêt à partir.
la source
la seule façon que je sache est de supprimer le fichier de concepteur et de faire une conversion en application Web. Cependant, lorsque vous faites cela, il apparaît généralement avec l'erreur, expliquant pourquoi il ne s'est pas régénéré automatiquement en premier lieu, c'est généralement une référence de contrôle qui n'est pas déclarée en tête de la page.
la source
int Id
propriété qui se compilait très bien en C # car elle est sensible à la casse. MaisID="ControlName"
dans la page aspx essayait de le faireId = "ControlName"
.Convert to Web App
dit quelque chose commeControlName cannot be converted to Int32
.Convertir en application Web n'a pas fonctionné pour moi.
La suppression de designer.cs et le collage d'un designer.cs vide n'ont pas fonctionné non plus.
Mais oui, cela a fonctionné:
Terminé. Nouveau concepteur.cs généré. :)
la source
J'ai souvent constaté que le copier / coller m'a causé ce problème . La plupart des cas peuvent être résolus en modifiant l'ID d'un contrôle serveur (ajoutez simplement un caractère, puis supprimez-le).
Souvenez-vous également que le contrôle à l'intérieur de choses comme les répéteurs n'est pas visible dans le fichier de concepteur.
Et oui, il y a des cas où vous devez effectuer la magie de suppression du fichier répertoriée ci-dessus - mais la solution de changement de nom fonctionnera la plupart du temps.
la source
Mon expérience est que si vous voulez faire comme dans cet article, comme indiqué ci-dessus.
Votre fichier de balisage (aspx / ascx) doit inclure l'attribut CodeBehind = "MyPage.aspx.cs" sinon il ne fonctionnera pas. J'ai blogué à ce sujet ici .
la source
J'ai trouvé un moyen de résoudre ce problème sans changer de code ou exécuter des commandes comme "Convertir en application Web" - et c'est aussi simple!
Ce que j'ai trouvé, c'est que le redémarrage de Visual Studio résout souvent le problème, mais parfois ce n'est pas le cas. Dans ces cas, si vous fermez Visual Studio, puis supprimez tout le contenu du répertoire "obj" du projet Web avant de le rouvrir, cela a toujours fonctionné pour moi.
(au redémarrage, il vous suffit d'ajouter un espace et de le supprimer à nouveau, puis d'appuyer sur Enregistrer pour régénérer correctement le fichier de concepteur)
la source
(Ce qui suit provient de l'expérience avec VS2005.)
Si vous modifiez une page ASPX pendant le débogage, le codebehind n'est pas mis à jour avec les nouvelles classes. Donc, vous devez arrêter le débogage, modifier trivialement la page ASPX (comme ajouter un bouton ou quelque chose), puis cliquez sur Mode Création, puis supprimez le bouton. Ensuite, vos fichiers de concepteur doivent être mis à jour.
Si vous rencontrez un problème différent avec VS2008, je ne peux pas vous aider.
la source
Lorsque vous êtes en mode Création, faites un clic droit sur l'écran et appuyez sur Actualiser.
la source
Une autre chose qui a fonctionné était -
Par exemple:
<Compile Include="<Path>\FileName.ascx.designer.cs"> <DependentUpon>FileName.ascx</DependentUpon> </Compile>
la source
Si vous utilisez VS2013 ou une version ultérieure, assurez-vous que le code référencé avec l'attribut "CodeBehind" et non "CodeFile", puis procédez comme suit
la source
la source
Voici ce que j'ai expérimenté, sélectionnez le dossier du site Web, faites un clic droit dans l'Explorateur de solutions, sélectionnez Convertir en application Web pour tout le fichier aspx qu'un fichier de concepteur sera généré.
Sameer
la source
Juste pour ajouter à la longue liste de réponses ici - je viens de rencontrer ce problème dans VS2010 (SP1) avec un fichier .aspx. J'ai essayé d'ajouter et de supprimer des contrôles ASP standard (ce qui a fonctionné dans le passé) mais à la fin, j'ai dû supprimer l'une des lignes runat = server d'un contrôle existant (et enregistrer) pour forcer le fichier de concepteur à se régénérer.
la source
Je rencontre le même problème depuis des années maintenant, en travaillant dans Visual Studio 2008. Et j'ai essayé toutes les "solutions" sur StackOverflow et des dizaines de blogs, tout comme je suis sûr que vous l'avez tous fait. Et parfois ils fonctionnent, et parfois ils ne fonctionnent pas, tout comme je suis sûr que vous les avez tous rencontrés. Et apparemment, c'est toujours un problème dans VS2010 et VS2012.
Donc finalement, il y a quelques mois, j'ai décidé que c'était assez, et en quelques semaines j'ai construit un outil appelé "Redesigner" qui génère des fichiers .designer. Il est open-source sous la licence BSD , avec le code source disponible sur SourceForge - gratuit à utiliser, gratuit à voler, libre de faire tout ce que vous voulez. Et il fait ce que Visual Studio ne fait pas si souvent, c'est-à-dire générer des fichiers .designer rapidement et de manière fiable.
Il s'agit d'un outil de ligne de commande autonome qui analyse les fichiers .aspx et .ascx, effectue toute la magie de réflexion nécessaire et crache les fichiers .designer corrects. Il fait tout l'analyse et la réflexion lui-même pour éviter de s'appuyer sur du code existant, que nous savons tous trop bien rompu. Il est écrit en C # contre .NET 3.5, mais il s'efforce d'éviter d'utiliser même System.Web pour autre chose que des déclarations de type, et il n'utilise pas ou ne s'appuie pas du tout sur Visual Studio .
Redesigner peut générer de nouveaux fichiers .designer; et il offre une option --verbose de sorte que lorsque les choses tournent mal, vous obtenez des messages d'erreur bien meilleurs que "Une exception de type System.Exception a été levée." Et il y a une option --verify qui peut être utilisée pour vous dire quand vos fichiers .designer existants sont cassés - contrôles manquants, déclarations de propriétés incorrectes, illisibles par Visual Studio, ou sinon tout simplement borked.
Nous l'utilisons sur mon lieu de travail pour nous sortir des confitures pendant la majeure partie du mois dernier maintenant, et bien que Redesigner soit encore une version bêta, il avance suffisamment pour que cela vaille la peine de partager son existence avec le public. J'ai bientôt l'intention de créer un plugin Visual Studio pour cela afin que vous puissiez simplement cliquer avec le bouton droit pour vérifier ou régénérer les fichiers de concepteur comme vous l'avez toujours souhaité. Mais en attendant, l'utilisation de la ligne de commande est assez facile et vous évitera beaucoup de maux de tête.
Quoi qu'il en soit, allez télécharger une copie de Redesigner maintenant et arrêtez de vous arracher les cheveux . Vous n'en aurez pas toujours besoin, mais quand vous le ferez, vous serez content de l'avoir!
https://sourceforge.net/projects/redesigner/
la source
TL; DR;
Modifiez l'
Inherits
attribut de la@Page
directive de la page ASPX et appuyez sur Enregistrer. Votre fichier de concepteur doit être régénéré.Assurez-vous que
Inherits
= <namespace>. <class_name> etCodeBehind
= <class_name> .aspx.csJ'essayais de le faire sur un projet Sharepoint 2010, en utilisant VS 2010 et TFS , et aucune des solutions ci-dessus ne fonctionnait pour moi. Principalement, l'option «Convertir en application Web» est manquante dans le menu contextuel du fichier .ASPX lors de l'utilisation de TFS dans VS 2010.
Cette réponse a finalement aidé . Ma classe ressemblait à ceci:
Et ma
@Page
directive était (sauts de ligne ici pour plus de clarté):J'ai d'abord changé le
Inherits
en MyProjects.Finance.Pages , appuyez sur Enregistrer, puis je l'ai changé de nouveau en MyProjects.Finance.Pages.FinanceSubmission et appuyez à nouveau sur Enregistrer. Et wallah! La page du designer a été régénérée!J'espère que cela aide quelqu'un à utiliser TFS!
la source
Dans Visual Studio:
1) Supprimez votre fichier aspx.designer.cs
2) Faites un clic droit sur votre fichier aspx et sélectionnez "Convertir en application Web" Cela devrait ajouter le fichier aspx.designer.cs en arrière et à jour.
Si vous obtenez une erreur disant:
"La génération du fichier de concepteur a échoué: la méthode ou l'opération n'est pas implémentée."
Essayez de fermer Visual Studio, puis rouvrez votre projet et recommencez l'étape numéro deux
Comment générer aspx.designer.cs dans Visual Studio?
la source
Étape 1 : Sélectionnez tout votre code aspx, coupez [CTRL + X] ce code et enregistrez.
Étape 2 : collez à nouveau le même code dans la même page et enregistrez à nouveau
Maintenant, votre page .desinger sera actualisée avec tous les contrôles de la page .aspx.
la source
Supprimez le fichier designer.cs puis cliquez avec le bouton droit sur le fichier .aspx et choisissez "Convertir en application Web". S'il y a un problème avec vos déclarations de contrôle, comme une balise qui n'est pas bien formée, vous obtiendrez un message d'erreur et vous devrez corriger la balise mal formée avant que Visual Studio puisse avec succès générer à nouveau votre fichier de concepteur.
Dans mon cas, à ce stade, j'ai découvert que le problème était que j'avais déclaré un contrôle bouton qui n'était pas à l'intérieur d'une balise de formulaire avec un attribut runat = "server".
la source
Il s'agit d'un bogue dans l'IDE; Je l'ai vu depuis VS 2003. La solution est cependant simple.
Sauvegardez vos fichiers. Quittez complètement l'EDI (assurez-vous que le processus s'arrête, tâche mgr.)
Rouvrez la solution, salissez le balisage, enregistrez. Fixé.
la source
J'ai eu deux problèmes ... AJAXControlkit obsolète - supprimé l'ancienne DLL, supprimé les anciens contrôles de la boîte à outils, téléchargé la nouvelle version, chargé la boîte à outils et glissé et déposé de nouveaux contrôles sur la page (voir http://www.experts-exchange.com /Programming/Languages/.NET/Visual_Studio_.NET_2005/Q_24591597.html )
Il y avait aussi une faute d'orthographe dans mon contrôle d'étiquette (j'avais utilisé «classe» au lieu de «cssclass»).
Ta
la source
J'ai eu le problème que mes nouveaux contrôles ne pouvaient pas générer dans le fichier de concepteur lorsqu'ils étaient déclarés dans le fichier .ascx. Le problème était que je les avais également déclarés dans le code. La suppression de la déclaration dans le code derrière a donc résolu mon problème.
la source
Si vous êtes comme moi et que vous ajoutez d'anciens fichiers .ASPX à un projet plus récent. Vous allez probablement oublier certains des contrôles utilisés sur la page.
Si oui, premièrement, s'il y a plusieurs fichiers que vous installez; Fixez un à la fois en premier.
Lorsque vous compilez, corrigez les erreurs générées. Ce seront probablement les mêmes erreurs dans tous les fichiers.
Ensuite, si vous avez des fichiers Designer, supprimez tous les fichiers Designer insérés. Ensuite, assurez-vous qu'il n'y a pas d'autres erreurs lors de la compilation, autres que les fichiers du concepteur.
Enfin, faites un clic droit sur votre projet Web et cliquez sur Convertir en application Web. Cela insérera les fichiers de concepteur dont vous avez besoin.
Ce sont les meilleures étapes absolues pour résoudre les problèmes.
la source
Une chose que personne n'a mentionnée est de visiter la page . J'ai dû arrêter la régénération de mon fichier de concepteur car j'incluais un contrôle utilisateur qui n'existait pas (pour diverses raisons), et aucune des choses suggérées ici ne fonctionnait. Pour une raison quelconque, je n'ai reçu aucune erreur dans Visual Studio - à part celle qui se plaignait du fait que mes contrôles côté client n'existaient pas parce qu'ils n'étaient pas régénérés, bien sûr.
Il a fallu réellement visiter la page pour obtenir ASP.Net pour me dire l'erreur.
la source
Cela peut également se produire si vous mettez à jour l'espace de noms et ne mettez pas à jour l'espace de noms dans le fichier de concepteur. Correction: mettez également à jour l'espace de noms dans le fichier de concepteur.
la source
La solution qui a fonctionné pour moi est:
Je viens de copier la page et de la coller dans la même partie, puis de renommer la première page (quel que soit le nom) et de renommer la page copiée en page d'origine. Maintenant, les contrôles sont accessibles.
la source