Resumen: renombrar y mover en VS2019 con git, retener el historial de git, aprovechar R # un poco, actualizar automáticamente la referencia de proyecto dependiente (importante para sln con muchos proyectos, tenemos> 200)
He estado usando los siguientes pasos para renombrar y mover proyectos de C # en Visual Studio 2019. Este proceso usa R # para ajustar los espacios de nombres. El historial de git se retiene haciendo un "git mv" (evitando agregar / eliminar la caída del historial).
Dos fases: 1) cambiar el nombre del proyecto en su lugar y 2) mover el proyecto.
(Utiliza consejos de proyectos de descarga de base2 ).
Rebautizar
- VS | Explorador de soluciones | proyecto con el botón derecho | Renombrar (p. Ej., Utils.Foo to Foo).
- VS | Explorador de soluciones | proyecto con el botón derecho | Propiedades | cambiar el nombre del ensamblado, 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 el botón derecho (producción y prueba) | Refactorizador | Ajustar espacios de nombres
- Es posible que sea necesario actualizar los archivos XAML que usan el proyecto (manualmente o con una búsqueda y reemplazo global adecuada)
- Reconstruir todo
- ¡¡Cometer!! (para cometer cambios antes de los movimientos)
Nota: La carpeta en el Explorador de Windows sigue siendo el nombre antiguo hasta este punto (por ejemplo, Utils.Foo). Esto se soluciona en los pasos de movimiento.
Moverse
Este método: 1) conserva el historial de git, 2) aprovecha R # para ajustar los espacios de nombres atómicamente 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 (de modo que la eliminación del proyecto de destino no desencadene cambios en proyectos dependientes)
VS | seleccione todas las carpetas de soluciones en la Solución | haga clic con el botón derecho en Descargar proyectos
mover carpetas usando git (para mantener el historial)
a) Abra el símbolo del sistema del desarrollador para 2019
b) estado de git (para ilustrar "nada que comprometerse, árbol de trabajo limpio")
c) git mv el proyecto, por ejemplo, git mv "C: \ Code \ foo \ foo \ Utils.Foo" "C: \ Code \ Foo"
d) estado de git para ver / verificar el cambio
- eliminar el proyecto
VS | Explorador de soluciones | seleccione proyecto | clic derecho | Eliminar (dado que todos los proyectos están descargados, esto NO eliminará correctamente las referencias a él en 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 se hayan actualizado los archivos * .csproj para proyectos dependientes.
(VS | Team Explorer | Cambios | haga doble clic en cualquier csproj dependiente enumerado | inspeccionar-verificar el cambio de ruta de ProjectReference)
- Arregle manualmente las rutas en el archivo único * .csproj movido
Use Notepad ++ (u otro editor de texto) para arreglar las rutas. A menudo esto se puede hacer con una simple búsqueda y reemplazo (por ejemplo, ../../../../ a ../../).
Esto actualizará ...
a) Referencias de GlobalAssmeblyInfo.cs
b) rutas a paquetes
c) rutas a los 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 solución, prefiero eliminar carpetas bin y obj para limpiar el historial, volver a abrir la solución
- Validar
a) VS | Team Explorer | Cambios
i) debería ver los cambios por etapas que revelan los archivos que se movieron ii) debería ver proyectos dependientes (* .csproj) que se actualizaron muy bien, revise los csproj diffs 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.
- ¡¡Cometer!!