2010-01-20 5 views
7

Je hérite du code ASP.NET (je suis un gars du système d'exploitation, pas un dev de web (encore ;-)). La solution a été recréée et il existe plusieurs projets (bibliothèques et sites asp.net). Mis à part les bibliothèques, il y a deux projets asp.net (appelés MAINSITE et SUBSITE). Seul MAINSITE est utilisé comme site officiel (en tant que site asp.net), et MAINSITE est déphasé sur le code du site SUBSITE asp.net, mais n'utilise pas le site lui-même. J'essaye de comprendre comment nettoyer ceci et convertir SUBSITE dans une bibliothèque.Qu'est-ce qui rend un projet ASP.NET une application par rapport à une bibliothèque?

Ma question rapide est, chaque fois que je débogue le MAINSITE (défini par défaut), il exécute deux processus asp.net: MAINSITE et SUBSITE. Et donc, à tout le moins, comment puis-je éviter cela? Y a-t-il une solution rapide/temporaire à cela?

Ma question détaillée est la suivante:

Ce qui rend un site asp.net un site asp.net? Par exemple, en C, la différence entre un dll et un exe pourrait être définie (superficiellement de toute façon) comme la présence d'une information d'exportation principale et potentielle pour la bibliothèque (entre autres, bien sûr). Si je devais convertir un exe en dll je pourrais: 1. enlever le code principal 2. s'assurer que l'interface publique était correcte (et exportée correctement) 3. convertir le makefile pour construire un dll plutôt qu'un exe. Est-ce que quelqu'un peut me diriger vers des étapes similaires pour asp.net vers .net lib? Peut-être: 1. se débarrasser de index.aspx 2. se débarrasser de web.config 3. des fichiers * .cs à supprimer? 4. comment changer les propriétés? 5. des pièges?

Merci beaucoup pour votre aide. Détails: Visual Studio 2008/.NET 3.5

+0

En ce qui concerne votre question rapide, il semble qu'il y ait plusieurs projets de démarrage configurés. Faites un clic droit sur Solution, Propriétés, puis sélectionnez un seul projet de démarrage avec le MAINSITE sélectionné dans la liste déroulante. – jamesaharvey

Répondre

3

Il existe de nombreux composants permettant de faire fonctionner une application en tant qu'application ASP.Net. Toutefois, en termes de votre projet d'application Web, il n'y a vraiment pas beaucoup de différence entre ce code et le code de la bibliothèque générique, sauf qu'une grande partie de votre code repose sur l'existence de l'exécution de HttpApplication.

Tout code qui utilise System.Web (en particulier System.Web.UI) va être suspect en termes de dépendance. Par exemple, tout le code dans la page ou les gestionnaires d'événements webcontrol (Init, Load, PreRender, etc.) repose sur le fait qu'un HttpHandler (s'exécutant dans une application HttpApplication) soulève ces événements. Si vous exécutez le même WebControl à partir d'une bibliothèque qui n'est pas dans un projet ASP.Net, rien de tout cela n'arrivera jamais et le contrôle sera inutile. Cependant, cette même bibliothèque exacte serait très fonctionnelle si elle était exécutée dans le contexte d'un processus ASP.Net.

Cela dépend vraiment du processus dans lequel vous exécutez la bibliothèque. Dans la plupart des cas, les processus ASP.Net sont engendrés par IIS, bien qu'il soit possible d'héberger un processus ASP.Net dans d'autres types de programmes. .

Il n'existe malheureusement pas de processus simple en 5 étapes pour convertir un projet Web en bibliothèque. Mais en règle générale, webcontrols, .aspx et.ascx codebehind ne va pas se convertir.

Pour un aperçu plus détaillé de ce qui fait du code dans un programme ASP.Net, voir "A Low level look at ASP.Net" de Rick Strahl.

3

Si vous allez dans "Fichier"> "Nouveau"> "Nouveau Projet ..." puis cliquez sur (en supposant que vous utilisez C#) "Visual C#" Dans la liste de gauche, vous avez la possibilité de créer un projet "Bibliothèque de classes". Vous pouvez extraire tout le code correspondant à l'un d'eux et ensuite référencer dans votre "MAINSITE".

Vous devrez le référencer dans la section "Références" de votre projet MAINSITE et devrez peut-être importer votre projet de bibliothèque à l'aide du mot-clé import.

+1

Yup - Ce sera probablement beaucoup plus propre que d'essayer de convertir SUBSITE en une bibliothèque de classes. – cwap

+2

Cela ne fonctionnerait que si son "sous-site" contient uniquement des classes ou d'autres fichiers "code". Des choses comme les fichiers ASPX et ASCX dépendent de la compilation ASP.NET et seraient probablement simplement référencés comme une ressource incorporée dans une bibliothèque de classes normale. –

+0

Eh bien, il a dit que la partie "site Web" de SUBSITE n'est pas utilisée, seulement quelques-uns des fichiers de code ... c'est pourquoi j'ai suggéré cette méthode. – Jason

Questions connexes