Visual Studio mueve el proyecto a una carpeta diferente
¿Cómo muevo un proyecto a una carpeta diferente en Visual Studio? Estoy acostumbrado a esta estructura en mis proyectos.
-- app
---- Project.Something
---- Project.SomethingElse
Quiero cambiar el nombre de todo el espacio de nombres SomethingElse a SomethingNew, ¿cuál es la mejor manera de hacerlo (sin ingresar manualmente al archivo .sln)?
Elimine el proyecto de su solución haciendo clic derecho en él en la ventana del Explorador de soluciones y seleccionando Eliminar. Mueva toda la carpeta del proyecto, incluidos los subdirectorios, donde desee que vaya. Vuelva a agregar el proyecto a su solución.
Los nombres de los espacios de nombres son algo completamente diferente, simplemente edite el código fuente.
Probé la sugerencia de eliminar y volver a agregar el proyecto, pero luego arreglar las dependencias puede ser una molestia.
Yo uso este enfoque:
- Mueva la carpeta del proyecto.
- Si el proyecto está en control de fuente, realice el movimiento usando los comandos de control de fuente.
- Edite el archivo de solución en un editor de texto. Sólo debería haber una ruta que debas cambiar.
- Cierra tu solución en VS2012
- Mueva su proyecto a la nueva ubicación
- Abre tu solución
- Seleccione el proyecto que no se pudo cargar
- En la ventana de herramientas Propiedades, hay una entrada editable "Ruta del archivo" que le permite seleccionar la nueva ubicación del proyecto.
- Establecer el nuevo camino
- Haga clic derecho en el proyecto y haga clic en recargar.
Resumen: cambiar el nombre y mover en VS2019 con git, conservar el historial de git, aprovechar un poco R#, actualización automática de referencias de proyectos dependientes (importante para sln con muchos proyectos, tenemos >200)
He estado usando los siguientes pasos para cambiar el nombre y mover proyectos de C# en Visual Studio 2019. Este proceso usa R# para ajustar los espacios de nombres. El historial de git se conserva haciendo un "git mv" (evitando agregar o eliminar el historial).
Dos fases: 1) cambiar el nombre del proyecto y 2) mover el proyecto.
(Utiliza un consejo de base2 para descargar proyectos).
Rebautizar
- VS | Explorador de soluciones | proyecto de clic derecho | Cambie el nombre (por ejemplo, Utils.Foo a Foo).
- VS | Explorador de soluciones | proyecto de clic derecho | Propiedades | cambiar el nombre del ensamblaje, el espacio de nombres predeterminado y los campos de información del ensamblaje
- Realice 1 y 2 para el proyecto de prueba correspondiente (por ejemplo, Utils.Foo.Tests)
- VS | Explorador de soluciones | proyectos con clic derecho (producción y prueba) | Refactorizar | Ajustar espacios de nombres
- Es posible que sea necesario actualizar los archivos XAML que utilizan el proyecto (manualmente o con una búsqueda y reemplazo global apropiado)
- Reconstruir todo
- ¡¡Comprometerse!! (para confirmar cambios antes de los movimientos)
Nota: La carpeta en el Explorador de Windows sigue teniendo el nombre anterior hasta este momento (p. ej., Utils.Foo). Esto se soluciona en los pasos de movimiento.
Mover
Este método: 1) conserva el historial de git, 2) aprovecha R# para ajustar los espacios de nombres de forma atómica y 3) actualiza los proyectos dependientes en masa (evita la tediosa edición manual de archivos sln y csproj dependientes).
descargar todos los proyectos en la solución (para que la eliminación del proyecto de destino no provoque cambios en los proyectos dependientes)
VS | seleccione todas las carpetas de soluciones en Solución | haga clic derecho en Descargar proyectos
mover carpetas usando git (para que se mantenga el historial)
a) abra el símbolo del sistema para desarrolladores para 2019
b) git status (para ilustrar "nada que confirmar, árbol de trabajo limpio")
c) git mv el proyecto, por ejemplo, git mv "C:\Code\foo\foo\Utils.Foo" "C:\Code\Foo"
d) git status para ver/verificar el cambio
- eliminar el proyecto
VS | Explorador de soluciones | seleccionar proyecto | clic derecho | Eliminar (dado que todos los proyectos están descargados, esto NO eliminará correctamente las referencias a ellos en los proyectos dependientes)
- vuelva a agregar el proyecto (a la nueva ubicación en el árbol en el Explorador de soluciones)
a) VS | Explorador de soluciones | seleccione la carpeta principal de destino | clic derecho | Añadir | Proyecto existente
- recargar todos los proyectos
IMPORTANTE: Confirme que los archivos *.csproj para proyectos dependientes se hayan actualizado.
(VS | Team Explorer | Cambios | haga doble clic en cualquier csproj dependiente enumerado | inspeccionar y verificar el cambio de ruta de ProjectReference)
- Corrija manualmente las rutas en el único archivo *.csproj movido
Utilice Notepad++ (u otro editor de texto) para corregir las rutas. A menudo esto se puede hacer con una simple búsqueda y reemplazo (por ejemplo, ../../../../ a ../../).
Esto se actualizará...
a) Referencias de GlobalAssmeblyInfo.cs
b) rutas a paquetes
c) rutas a archivos de diagrama de validación de dependencia
d) rutas a rutas de conjunto de reglas (por ejemplo, <CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>
)
- Cierre y vuelva a abrir la solución (para que las referencias del proyecto estén en buen estado)
Guardar todo, cerrar la solución, prefiero eliminar las carpetas bin y obj para limpiar el historial, volver a abrir la solución
- Validar
a) VS | Explorador de equipo | Cambios
i) debería ver cambios por etapas que revelan los archivos que se movieron ii) debería ver proyectos dependientes (*.csproj) que se actualizaron muy bien, revise las diferencias de csproj y observe que las rutas se han actualizado maravillosamente. (Esta es la magia que evita laboriosamente actualizar manualmente los archivos csproj usando un editor de texto)
b) en el Explorador de Windows, verifique que la ubicación anterior esté vacía
c) Limpiar solución, reconstruir solución, ejecutar pruebas unitarias, iniciar aplicaciones en sln.
- ¡¡Comprometerse!!