2009-04-17 8 views
9

Je suis en train de mettre à jour un projet de Visual Studio 2003 à 2008 et je souhaite générer automatiquement des fichiers XXX.Designer.cs et mettre à jour le fichier original XXX.cs correspondant.Comment convertir automatiquement les classes VS2003 en fichiers Designer.cs partiels?

Une manière automatique de le faire?

MISE À JOUR: Je fais référence à WinForms. Bien sûr, je sais que le vieux style fonctionne mais je cherche un moyen d'aller au nouveau style sans le faire à la main.

+0

Je ne vois pas où vous avez dit que ce soit un projet ASP.NET ou un projet Windows Forms. Veuillez indiquer lequel. –

+2

Plus de réponses sont à http://stackoverflow.com/questions/669540/split-old-net-code-into-designer-partial-class – reinierpost

Répondre

0

Je ne suis pas sûr de comprendre, mais je vais faire une estimation.

Était-ce un projet ASP.NET dans VS2003? Est-ce qu'il contenait des fichiers .Designer.cs? Est-il vrai que vous avez effectué une mise à niveau mais que vous n'avez pas de fichiers .Designer.cs maintenant?

Si oui - vous pouvez avoir par inadvertance changé votre projet d'application Web dans un site Web « projet ». Ce genre de "projet" a été introduit dans VS2005, donc vous ne l'auriez pas encore vu. Ce ne sont pas de vrais projets (pas de fichier .csproj), et ils ont beaucoup d'autres différences.

Sinon, si votre projet n'a pas l'habitude d'avoir des fichiers .Designer.cs, alors pourquoi les voulez-vous maintenant?

En général, la façon de créer des fichiers de concepteur est d'ouvrir le fichier dans un concepteur, attendez quelques instants pour le concepteur de terminer ce qu'il fait (mise à jour de l'écran, etc.); puis enregistrez le fichier. Vous devrez peut-être «toucher» l'original pour que le concepteur réévalue les choses.

+2

VS2003 n'a pas eu de fichiers .designer.cs parce que .net 1.1 n'a pas soutenir les classes partielles. Donc, il suffit de mettre les déclarations de contrôle cachées dans une région dans le codebehind. FerranB demande un moyen automatisé de déplacer ces déclarations vers un fichier de concepteur. –

+0

Ça fait tellement longtemps que j'ai utilisé VS2003 que j'avais oublié! Dans ce cas, l'ouverture dans le Designer, puis l'enregistrement le fera manuellement. Il peut y avoir un moyen d'automatiser cela, soit par des macros ou une extensibilité VS plus forte. Les macros vont probablement le faire. –

+0

Non, ni VS2005, ni VS2008 ne déplace automatiquement les éléments dans les fichiers .designer simplement en les ouvrant et en les enregistrant. –

1

Les classes d'origine continueront à fonctionner, même avec le concepteur Visual Studio. Le code que le VS met dans les classes Designer est simplement destiné à supprimer le "bruit" du concepteur dans un fichier séparé afin que vous puissiez vous concentrer sur le code non visuel de votre classe.

Une fois que vous migrez le projet à l'aide de l'assistant VS2008, vous pouvez ouvrir vos formulaires dans VS et continuer à les modifier juste comme vous le faisiez avant. Tous les nouveaux formulaires que vous créez recevront des fichiers de back-up Designer.

1

Nous avons eu ce problème.

Fondamentalement, le fichier concepteur doit contenir rien d'autre qu'un ensemble de déclarations d'objet (à savoir les objets sur la forme) et l'appel InitializeComponent(). Si vous avez fait un travail de fantaisie sur votre constructeur qui pourrait être là aussi.

Créez simplement un fichier appelé MyForm.Designer.cs et ajoutez-le au projet. VS2008 le placera automatiquement sous MyForm.cs. À partir de là, si vous créez l'en-tête de classe partielle et l'espace de noms, copiez ensuite toutes les déclarations et l'appel Initializecomponent dans le fichier du concepteur, puis cela fonctionnera.

Mais parce que si vous deviez le faire, les gens éditeraient le composant initializ et éditeraient le constructeur par défaut, VS2005 et 2008 ne pourraient pas automatiquement mettre à jour ces fichiers car toutes sortes de choses étranges pourraient se produire. Je suppose que du point de vue du projet, quel avantage pensez-vous que votre code de travail dérivera de la séparation?

3

Il existe une macro flottant qui fait cela. Je l'ai utilisé et ça fonctionne très bien. Commencez par regarder Nathan Jones Blog. Si vous n'avez pas beaucoup de chance alors télécharger un zip de la macro source (j'ai posté) de VSCONVERT - PasteBin

+0

Le lien a expiré sur fileFactory. – Matthieu

+0

Ok, Changé la source de code à pastebin. Je n'ai pas utilisé cette macro depuis 2006, période 2008. – ja72

Questions connexes