2009-04-15 27 views
6

ACTUALIZACIÓN: Todos estos problemas se debían a la conversión de una aplicación de sitio web a un proyecto web en Visual Studio. Una vez que cavé y encontré la solución, como marqué como respuesta a continuación.C#: Cómo convertir un proyecto de sitio web a un proyecto web

Básicamente, si desea actualizar/mover su proyecto de sitio web a un proyecto web, se encontrará con una serie de errores. El breve resumen de cómo hacerlo está en la respuesta a continuación. Gracias a todos por sus comentarios y ayuda.

pregunta Antiguo y el título es el siguiente:

Cómo envolver xx espacio de nombres {} para todos los archivos de clase?

¿Cómo ajustaría el espacio de nombre a todos los archivos de código subyacente en un proyecto web (o cualquier proyecto)?

namespace MyDomain 
{ 
    // regular code here 
} 

Larga historia corta ...

he estado convirtiendo un proyecto que fue subcontratada en el extranjero. Más de 20,000 archivos en el proyecto 'web' solo, para un sitio web tan simple (mueve la cabeza). Fue escrito en vs2005 usando VB.NET y C# (sí, ambas complilaciones). Originalmente era una aplicación del sitio web. Lo he convertido en una aplicación web, principalmente debido a los 8,000 ensamblajes "temporales" que se producen cuando publica.

Ok, me estoy convirtiendo a VS2008. He convertido todo el código a C#. Se ve bien. He traído todos los códigos especiales App_Code/VB y C# en conjuntos separados.

Ahora cuando intento compilar de nuevo, me alertan de una gran cantidad de errores. Corrijo esto envolviendo los archivos subyacentes de código en un Espacio de nombres y actualizando el control de usuario para usar el nuevo espacio de nombres.

Pero ... 5000+ errores para ir ... ¡Ayuda!

alt text http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

Tal vez hay otra manera? Aquí hay un fragmento de muestra de la codehind:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage 
{ ... } 

Aviso el nombre de clase MyHomepage_MyStuff_MyPosts. Esta es la ruta del directorio a la ubicación del archivo en /MyHomepage/MyStuff/MyPosts.aspx.

El error es que el archivo codebehind no puede encontrar una referencia al control que se está utilizando. Tales como:

ctl_website_rpt.RowCount = _totalCount; 

Este es un control (la convención de nomenclatura) llamado "ctl_website_rpt" dentro del archivo ASPX. La página aspx tiene en el encabezado:

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="MyHomepage_MyStuff_MyPosts" %> 

¿Hay alguna manera de que pueda hacer referencia a esta página en otro lugar? Sin cambiarlo al espacio de nombres de?

namespace Website.MyHomepage.MyStuff 
{ 
    public partial class MyPosts 
    { ... } 
} 

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="Website.MyHomepage.MyStuff.MyPosts" %> 

Respuesta

4

Fyi, encontré la solución. Es más fácil de lo que piensas.

Simplemente haga clic derecho en su nuevo proyecto web y hay una opción para "Convertir a aplicación web"."Esto hace algunas cosas interesantes. Primero, crea el archivo auto [archivo] .aspx.designer.cs. Esto eliminó el 99% de mis errores, ya que el código detrás no pudo encontrar una referencia al control. (ver captura de pantalla en mi pregunta anterior).

Esto también re-escribe el <% @ Page%> decleration en su archivo aspx a heredar del código detrás es el nuevo nombre/espacio de nombres.

todo lo que quedaba era algunos temas de referencia de montaje y hecho

El Cómo es:

1) crear un nuevo proyecto web, copia todos los archivos de su antiguo proyecto de sitio web al nuevo proyecto web.

2) Repare todas las referencias a sus ensamblajes que usted SABE que necesitará.

3) Haga clic con el botón derecho en la Aplicación web y seleccione Convertir a aplicación web. Inspeccione de cerca el error y el registro de advertencia. Vuelva a convertir a voluntad una vez que arregle las cosas.

Si algún archivo aspx o ascx no tiene un archivo designer.cs, la conversión falló en ese archivo. Repare las referencias, el espacio de nombres, etc. y reconvierta.

Consejo # 1: Asegúrese de tener todas las referencias agregadas antes de Convertir a la aplicación web. Algunas veces pueden ocurrir varios errores.

Consejo n.º 2: aunque parece que se ha completado, busca los errores después de la conversión. Le indicará los archivos que no pudo convertir, por lo que debe trabajar en ellos.

Consejo n.º 3: Puede volver a convertir cualquier subdirectorio, o cualquier archivo, cualquier cantidad de veces. Supongamos que tiene varios errores en el n. ° 2 que estaba trabajando para corregir, puede volver a convertir ese archivo o directorio varias veces hasta que lo solucione. Volver a convertir no hace daño a la aplicación existente.

1

no puedo pensar en una solución que no sea escribir una pequeña aplicación de consola que ir a través de todos los archivos y modificarlos para usted.

+0

Eso es una idea. Esperando otra solución (actualizó la pregunta con mucho más detalle). – eduncan911

Cuestiones relacionadas