2010-01-20 13 views
7

Estoy heredando algún código ASP.NET (soy un chico del sistema operativo, no un desarrollador web (aún ;-)). La solución ha sido redimensionada y hay múltiples proyectos (bibliotecas y sitios asp.net) en ella. Además de las bibliotecas, hay dos proyectos asp.net (llamados MAINSITE y SUBSITE). Solo se utiliza MAINSITE como el sitio oficial (como un sitio asp.net), y MAINSITE depende del código en el sitio SUBSITE asp.net, pero no utiliza el sitio en sí. Estoy intentando descubrir cómo limpiar esto y convertir SUBSITE en una biblioteca.¿Qué hace que un proyecto ASP.NET sea una aplicación frente a una biblioteca?

Mi pregunta rápida es que cada vez que depuro el MAINSITE (configurado como predeterminado), ejecuta dos procesos asp.net: MAINSITE y SUBSITE. Y así, al menos, ¿cómo puedo evitar esto? ¿Hay una solución rápida/temporal para esto?

Mi pregunta detallada es la siguiente:

Lo que hace que un sitio asp.net un sitio asp.net? Por ejemplo, en C la diferencia entre un dll y un exe podría definirse (superficialmente de todos modos) como la presencia de una información de exportación principal y potencial para la biblioteca (entre otras cosas, por supuesto). Si tuviera que convertir un exe a dll podría: 1. eliminar el código principal 2. asegurarse de que la interfaz pública era correcta (y exportar correctamente) 3. convertir el archivo MAKE para construir un archivo DLL en lugar de un EXE.

¿Alguien me puede indicar algunos pasos similares para asp.net a .net lib? Tal vez: 1. deshacerse de index.aspx 2. deshacerse de web.config 3. cualquier * .cs archivos para eliminar? 4. ¿Cómo cambio las propiedades? 5. ¿Algún problema?

Muchas gracias por su ayuda. Detalles: Visual Studio 2008/.NET 3.5

+0

En cuanto a su pregunta rápida, parece que hay varios proyectos de inicio configurados. Haga clic con el botón derecho en Solución, Propiedades y luego seleccione el proyecto de inicio único con la LÍNEA PRINCIPAL seleccionada en el menú desplegable. – jamesaharvey

Respuesta

3

Existen muchos componentes para que una aplicación se ejecute como una aplicación ASP.Net. Sin embargo, en términos de su proyecto de aplicación web real, realmente no hay mucha diferencia entre él y el código genérico de la biblioteca, excepto por el hecho de que gran parte de su código se basa en la existencia del tiempo de ejecución HttpApplication.

Cualquier código que utilice System.Web (especialmente System.Web.UI) será sospechoso en términos de tener esta dependencia. Por ejemplo, todo el código en controladores de eventos de página o webcontrol (Init, Load, PreRender, etc.) se basa en el hecho de que hay un HttpHandler (ejecutándose dentro de una aplicación Http) que genera estos eventos. Si ejecuta el mismo WebControl fuera de una biblioteca que no está en un proyecto ASP.Net, nada de esto sucederá y el control será inútil. Sin embargo, esa misma biblioteca sería bastante funcional si se ejecuta en el contexto de un proceso ASP.Net.

que realmente se reduce a qué proceso se está ejecutando en la biblioteca. En la mayoría de los casos, los procesos de ASP.Net son generados por IIS, aunque es posible alojar un proceso de ASP.Net en otros tipos de programas, así .

Desafortunadamente no hay un proceso simple de 5 pasos para convertir un proyecto web a una biblioteca. Pero como regla general, controles web, .aspx y.El código ascx no se va a convertir.

Para obtener una visión más detallada de lo que hace que el código entre en un programa ASP.Net, consulte "A Low level look at ASP.Net" de Rick Strahl.

3

Si va a "Archivo"> ​​"Nuevo"> "Nuevo proyecto ..." y luego hace clic en (suponiendo que está usando C#) "Visual C#" en la lista de la izquierda, tiene la posibilidad de crear un proyecto de "Biblioteca de clases". Puede extraer todo el código relevante a uno de estos y luego hacer referencia en su "MAINITE".

Tendrá que hacer referencia a esto en la sección "Referencias" de su proyecto MAINTITE y puede necesitar importar su proyecto de biblioteca utilizando la palabra clave import.

+1

Sí - Esto probablemente será mucho más limpio que tratar de convertir SUBSITE en una biblioteca de clases. – cwap

+2

Eso solo funcionaría si su "subsitio" contiene solo clases u otros archivos de "código". Cosas como los archivos ASPX y ASCX dependen de la compilación de ASP.NET y probablemente solo se haga referencia como un recurso incrustado en una biblioteca de clases normal. –

+0

bien dijo que la parte del "sitio web" de SUBSITE no se usa, solo algunos de los archivos de código ... es por eso que sugerí este método. – Jason

Cuestiones relacionadas