Comment convertir le site Web ASP.NET en application Web ASP.NET

J’ai un site Web ASP.NET 3.5 (Visual Studio Lingo), mais le site continue de croître et semble plutôt cowboy, entre autres. J’aimerais voir cela converti en une application Web (espaces de noms et tout).

Est-ce quelque chose qui peut être facilement fait dans Visual Studio? Sinon, existe-t-il d’autres outils pouvant créer tous les espaces de noms, etc.

Eh bien, il s’avère que l’option “Convertir en application Web” n’existe pas pour les “sites Web”. L’option “Convertir en application web” n’existe que pour les “applications web” !!!!

[emphase la mienne]

Alors, voici l’affaire, pour faire la conversion, vous devez:

  • Ajoutez une nouvelle “Application Web” à votre solution VS 2008 (Fichier-> Ajouter-> Nouveau projet-> C # -> Web-> Application Web ASP.NET).

  • Ensuite, vous copiez tous les fichiers de l’ancien “site Web” dans votre “application Web” nouvellement créée et remplacez tous les fichiers créés par défaut.

  • La prochaine étape est la plus laide, vous devez append “manuellement” les références dans votre “site Web” à la nouvelle “application web”. Je pensais que le jouet VS 2008 PowerCommands le ferait pour moi, car il copie des références d’autres types de projets, mais ce n’est pas le cas. Vous devez le faire vous-même, manuellement, et vous devez être prudent dans cette étape si vous avez plusieurs versions du même assemblage (comme AJAXToolkit dans mon cas) ou des assemblys ayant à la fois des versions GAC et locales.

  • Continuez à répéter la dernière étape et à essayer de créer “l’application Web”. Vous continuerez à recevoir des erreurs comme “‘….” est un espace de noms inconnu. Manque-t-il une référence d’assemblage? “. Assurez-vous que vous n’avez aucun de ceux-là sauf ceux où “….” est remplacé par les ID des contrôles serveur que vous utilisez. En d’autres termes, continuez à append des références et à créer le projet jusqu’à ce que seules les erreurs dues aux fichiers .DESIGNER.CS ou .DESIGNER.VB soient manquantes.

  • Ensuite, accédez au nœud du projet racine “application Web” dans l’explorateur de solutions VS 2008, puis cliquez avec le bouton droit de la souris pour trouver l’option “Convertir en application Web”. En fait, cette option apporte de petites modifications aux directives “@Page” et “@Control” des pages et des contrôles et crée les fichiers .DESIGNER.CS ou .DESIGNER.VB requirejs.

  • Essayez à nouveau de créer l’application Web. Si vous rencontrez des erreurs, consultez les références manquantes et / ou cliquez à nouveau sur “Convertir en application Web”. Parfois, s’il y a une erreur autre que celles causées par des fichiers DESIGNER manquants, les fichiers DESIGNER ne sont pas créés pour toutes les pages / tous les contrôles. Corriger le problème non-DESIGNER et cliquer à nouveau sur “Convertir en application Web” devrait faire l’affaire.

  • Une fois que vous avez terminé la création de VS, vous devriez être prêt à partir. Commencez à tester votre application Web. Vous pouvez également cliquer avec le bouton droit de la souris sur le nœud du projet racine “application Web” dans VS 2008 Solution Explorer et cliquer sur “Propriétés”, puis sur l’onglet “Web” pour définir “l’application Web” sur un dossier virtuel dans IIS. répertoire virtuel à partir de là dans VS). Si vous souhaitez utiliser le répertoire virtuel IIS utilisé par l’ancien “site Web”, vous devez d’abord le supprimer d’IIS.

  • Mise à jour: Lorsque vous testez vos pages, accordez la plus grande attention aux classes du dossier “App_Code”, en particulier celles sans NO NAMESPACE. Ceux-ci peuvent être un gros piège. Nous avons eu un problème avec deux surcharges de méthodes d’extension dans la même classe statique qui n’avait pas d’espace de noms, on étend DateTime? (Nullable) et appelle une autre surcharge qui étend DateTime lui-même. L’appel de l’autre surcharge en tant que méthode d’extension a réussi la compilation de VS 2008 et nous a donné une erreur de compilation UNIQUEMENT EN DURÉE (avec IIS). Changer l’appel de l’autre en l’appelant comme méthode d’extension pour l’appeler en tant que méthode statique normale (seulement changer l’appel dans la même classe, les appels des autres classes sont restés des appels de méthode d’extension) a résolu celui-là sûr comme il était dans VS 2005. Surtout avec les classes sans espaces de noms.

  • Update2: Lors de la conversion, VS 2008 renomme votre “App_Code” en “Old_App_Code”. Ce nouveau nom est moche, mais ne le renommez pas. Dans le modèle “application Web”, tout le code sera dans un assemblage. A l’exécution, le serveur Web ne sait pas quel type de projet Web vous utilisez. Il prend tout le code dans le dossier “App_Code” et crée un nouvel assemblage pour lui. De cette façon, si vous avez du code dans le dossier nommé “App_Code”, vous vous retrouverez avec des erreurs de compilation RUNTIME qui existent dans deux assemblys, celui créé par VS et celui créé par IIS / ASP.NET Development Server . Pour éviter cela. laissez le “Old_App_Code” avec le même nom ou renommez-le en n’importe quoi SAUF: “App_Code”. Ne placez pas de code dans un tel dossier “App_Code” et ne possédez PAS de préférence un dossier portant ce nom dans votre “application Web”.

Je le sais depuis avant mais je l’ai oublié maintenant car je n’ai pas utilisé de modèle “site web” depuis longtemps :(.

Procédure pas à pas: conversion d’un projet de site Web en projet d’application Web dans Visual Studio sur MSDN

Si l’application de votre site Web se développe, il est préférable de la diviser en plusieurs projets. La conversion du projet de site Web en projet d’application Web n’aidera pas beaucoup.

Si vous rencontrez des problèmes pour que votre nouveau projet d’application Web soit généré, vérifiez les propriétés de fichier dans Visual Studio de toutes les classes «d’assistance». Pour un projet que je convertissais, l’action de construction était définie sur Contenu alors qu’elle aurait dû être Comstackr.

Je faisais face aux mêmes problèmes au départ. Après avoir suivi le livre ASP.NET 4.0 de Wrox Professional, j’ai trouvé la solution suivante pour mon cas.

J’ai d’abord créé une nouvelle application Web. Copié tous les fichiers du site Web dans le dossier de l’application Web. Cliquez avec le bouton droit de la souris sur l’application, puis cliquez sur Convertir en application Web.

Vous pourriez vous demander pourquoi vous devez convertir une application Web en une application Web. La réponse est que lorsque vous créez un site Web, il vous suffit de coder le fichier .cs si nécessaire. Une application Web, cependant, déclare automatiquement .design.cs (ou .vb) et un fichier .cs pour la section de code et de conception.

SUIVANT: Supprimez toutes les références manuelles, telles que l’atsortingbut “Inherits” dans la directive PAGE, aux autres fichiers de votre site Web, car les espaces de noms se chargeront de référencer les classes de manière centralisée.

J’ai également rencontré un problème, car je n’avais pas inclus le dossier OBJ et BIN dans mon projet. Si vous pensez qu’il vous manque vos dossiers BIN et OBJ, cliquez simplement sur l’icône “Afficher tous les fichiers” dans l’Explorateur de solutions, puis cliquez avec le bouton droit sur les dossiers manquants et ajoutez-les au projet. (pour vous assurer qu’ils sont compilés avec le projet)

MISE À JOUR: Comme @deadlychambers le fait remarquer dans les commentaires: Vous pouvez chercher partout en effectuant un “Ctrl + Shift + F”, puis recherchez Inherits="(.*?)" . Cela trouvera toutes les occurrences et vous fera probablement gagner du temps!

Créer une nouvelle application Web dans VS 2010.
1. À l’aide de Windows Explorer, copiez tous vos fichiers dans le dossier de votre projet.
2. Dans l’explorateur de solutions VS 2010, affichez tous les fichiers.
3. Sélectionnez les fichiers et les dossiers – faites un clic droit pour inclure dans le projet.
4. Cliquez avec le bouton droit sur l’explorateur de solution du projet et sélectionnez Convertir en application Web.

Il y a quelques petites différences, telles que le dossier App_Code sera renommé en old_app_code – ce qui, étonnamment, ne provoque aucune erreur. Le TypeName sur vos sources de données d’object et les héritiers sur la balise @Page peuvent nécessiter le [NomProjet]. préfixe ajouté globalement. Par exemple, si votre nom de type était “BusinessLogic.OrderManager” et que le nom de votre projet est InventorySystem, vous devez le remplacer par InventorySystem.BusinessLogic.OrderManager. De plus, quelques modifications d’affichage, telles que les validateurs de champs obligatoires, ne sont plus utilisées par défaut pour les fonts rouges, elles sont par défaut noires.