2010-07-19 24 views
8

No está relacionado con el código, pero está relacionado con IDE. Estoy trabajando en una solución .NET con aproximadamente 35 proyectos diferentes. Estos proyectos deben reorganizarse en una nueva estructura de carpetas. ¿Por qué? Debido a que aproximadamente 10 de ellos serán eliminados y el resto se dividirá en unidades más lógicas. Una forma de hacerlo es creando una nueva solución, Arrastre & Coloque los proyectos en un nuevo árbol de carpetas dentro del explorador de Windows y luego simplemente agréguelos a la nueva solución. Para ser sincero, ¡eso suena tonto!Mover archivos de proyectos en un proyecto .NET

¿Hay alguna forma de trasladar proyectos a diferentes carpetas desde el IDE? Intenté "guardar como" los proyectos pero el IDE no aceptará una carpeta diferente.

Es irritante, pero como ha habido algunas elecciones incorrectas en los nombres de las carpetas, ahora estoy atascado con esos nombres.


Ejemplo: ahora tengo una carpeta principal del proyecto que contiene carpetas secundarias llamadas "Cliente", "Servidor", "Negocio", "Base de datos" y lo que sea. Dentro de esas carpetas secundarias, hay más carpetas secundarias, cada una un número de tres dígitos. Dentro de cada carpeta numerada hay un proyecto que se nombra de alguna manera lógica, como Empresa.Cliente.Clientes con lógica adicional dentro de este proyecto. El problema es que no todos los proyectos ahora siguen esta convención de nomenclatura y la considero obsoleta. Un proyecto como Company.Business.Customers solo debe estar en una carpeta llamada Company.Business.Customers en la raíz del proyecto para que sea más fácil de reconocer. El nombre ya deja en claro que es una clase de negocios para este proyecto. La división clara dentro de las clases de clientes, las clases de negocios y todo lo demás que debe arreglarse dentro de la solución, pero quiero aplanar la estructura del archivo. (Y elimine algunos proyectos obsoletos.) Básicamente, no estoy refabricando, solo estoy limpiando. VS2008 no parece tener esa opción, aunque ...

+0

En explorador de soluciones que tiene el botón "Mostrar todos los archivos" que le permite acceder a otras carpetas que no están asociados con el proyecto, por lo que puede crear nuevas carpetas de proyectos Explorador de soluciones, de arrastrar y soltar que desee en ellos, y justo -Haga clic en "incluir en el proyecto" incluirlos para proyectar ... Espero conseguirlo. = D – Cipi

+0

¿Está preguntando sobre la reorganización de los proyectos en el disco, en el explorador de soluciones o en ambos? De cualquier forma, probablemente edite el archivo .sln directamente para los cambios. – Rup

+1

Reorganizando solo en disco. La reorganización en el explorador de soluciones es tan simple como Arrastrar y soltar. –

Respuesta

0

he utilizado la siguiente solución para resolver mi problema:

  1. Empecé con una nueva solución, vacía en una nueva carpeta.
  2. Para cada proyecto que se tuvo que mover, utilicé el explorador de Windows para crear una carpeta hija en la carpeta de la solución, esta vez con el nombre correcto.
  3. Copié los proyectos desde su ubicación original a sus nuevas carpetas.
  4. Agregué todos los proyectos existentes (movidos) de sus nuevas ubicaciones.
  5. En Solution Manager, cambié el nombre de los proyectos a un nombre mejor.
  6. He arreglado las propiedades del proyecto y otras configuraciones para todos los proyectos.

Esto limpió todo el proyecto bastante bien.Luego agregué todo el proyecto a Vault (Version Control System) y una vez que estaba en el VSS, eliminé la carpeta nuevamente (en realidad, simplemente renombré primero) y la recuperé desde el sistema VSS, por lo que cualquier binario obsoleto y otra basura era ido también Es mucho trabajo, pero el resultado resultó exactamente lo que necesitaba.

1

No creo que haya una respuesta fácil aquí. Su principal problema será que a Visual Studio (o .NET) no le importa si tiene clases que pertenecen a un espacio de nombres raíz diferente que se encuentra en un proyecto.

Así que si tiene un proyecto llamado Project.BusinessObjects y otro proyecto llamado Project.DataObjects, no hay nada que le impida poner una clase llamada Project.BusinessObjects.User en el proyecto Project.DataObjects.

No conozco ninguna forma de hacer todo esto sin mucho trabajo manual. Resharper te ayudará bastante si usas la función 'namespace rename' (cambiar el nombre del espacio de nombres), pero aún así terminarás con mucho trabajo pesado.

1

Además, tenga MUCHO cuidado de hacer esto en conjunto con los sistemas de control de versiones. Debes conocer muy bien tu sistema de control de versiones para saber cómo reaccionará ante una refactorización tan importante.

Aparte de eso, lo que está describiendo no es tan difícil. Debe editar los archivos de la solución y quizás los archivos del proyecto a mano, y es posible que tenga que eliminar un proyecto de una solución y volver a agregarlo cuando esté en el directorio correcto.

Me gustaría hacer una copia de seguridad, y luego refactorizar de distancia. Sin embargo, creo que es un error pensar que puede hacer todo lo que necesita del IDE. Y si hace lo que describe desde el IDE en un sistema de control de fuente que usa la antigua API de Visual SourceSafe, usted certificará (garantizó) que arruinará sus enlaces, que la API simplemente no está hecha para moverse (o renombrar, para el caso) archivos en la forma que describes La mejor forma de hacerlo en ese escenario es eliminar todos los enlaces de control de origen y luego volver a agregar la solución reorganizada.

No es tan difícil, solo tienes que prepararte (hacer una copia de seguridad) y experimentar hasta que lo hagas bien.

+0

Estoy usando Vault para el control de versiones y, básicamente, todo se moverá a una base de datos VCS diferente, por lo que se convierte en un nuevo proyecto dentro de Vault. ¡Es por eso que es perfecto cambiar el nombre de la estructura de la carpeta ahora mismo! –

+0

Genial, luego quite los enlaces de control del código fuente, realice una copia de seguridad (haga clic en el archivo ZIP) y renombre/aleje los archivos. Mantenga el archivo de solución sincronizado con las ubicaciones físicas de los archivos y abra la solución en VS de vez en cuando para asegurarse de que todo esté correcto hasta el momento. –

+0

Hago un montón de desarrollo con Delphi y Delphi me permite guardar los archivos del proyecto en una carpeta diferente. Por eso esperaba una opción similar dentro de VS2008. Mover proyectos en Delphi no es muy complejo. Pero en VS2008 ... Es una característica que falta. –

6

Encienda notepad.exe y abra el archivo .sln. Y comience Windows Explorer, navegue al directorio de soluciones. Observe cómo el contenido del archivo .sln coincide con la estructura de la solución. Edite las entradas, realice el cambio correspondiente con Explorer. Copia de seguridad primero.

1

No creo que haya ninguna manera de hacerlo desde Visual Studio, y como @gmagana señala que va a ser muy difícil hacerlo si los archivos están bajo control de versión.

Sin embargo, es posible hacerlo manualmente.

Comience por crear la nueva estructura de carpetas deseada: ignore los archivos .csproj y los archivos de la solución por ahora, y más los archivos .cs que le interesan en la nueva estructura.

Ahora, inicie Visual Studio y cree un nuevo proyecto vacío. Si tiene diferentes tipos de proyectos, es posible que desee crear un proyecto nuevo y vacío para cada tipo. Esto lo dejará con un archivo .csproj vacío y un archivo .sln con solo un proyecto.

Copie el archivo de proyecto vacío donde se necesitan y cámbiele el nombre según sea necesario. Puede editarlos y cambiar el nombre del ensamblado y el espacio de nombres predeterminado si lo desea, o esperar hasta que haya terminado y cambiar la configuración con Visual Studio.

Finalmente, edite el archivo .sln y elimine la sección Proyecto. Copie el archivo .sln vacío en el lugar que desee y ábralo en Visual Studio. Ahora ve y agrega cada uno de tus proyectos existentes a la nueva solución.

Dentro de cada proyecto, haga clic en el botón "mostrar todo" y comience a incluir todos los archivos que haya copiado en la estructura del proyecto. Resuelva las dependencias que faltan, cambie los espacios de nombres y los nombres de ensamblado para el proyecto y asegúrese de que los archivos de código no especifiquen un espacio de nombres que no desea. Repita hasta que termine.

Una vez que obtenga la nueva solución para compilar, será útil abrir los archivos DLL en Reflector para asegurarse de que no ha omitido ninguna declaración de espacio de nombres en el archivo de código, si está tratando de llegar a un punto donde hay una correspondencia 1-1 entre el DLL y el espacio de nombres, o incluso asegurando que no hay espacios de nombres divididos entre las DLL, Reflector es tu amigo.

Buena suerte.

+0

Tengo 35 proyectos diferentes y aproximadamente 300 archivos .cs. Esta es una opción bastante compleja. Creo que mover el .csproj con los archivos .cs debería facilitarlo. –

+0

Tu pregunta parecía implicar que estarías moviendo algunos archivos a nuevos proyectos, cambiando el nombre de rutas, etc. Creo que es más fácil hacer la reorganización en el sistema de archivos, luego volver a agregar todo, que tratar de averiguar qué se ha movido, lo que no ha sido, etc. Sí, es complejo, pero lo que estás tratando de hacer es complejo, y mi sugerencia es realmente una sola cosa, hecha de la misma manera una y otra vez. – chris

Cuestiones relacionadas