Visual Studio mueve el proyecto a una carpeta diferente

182

¿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 to SomethingNew, ¿cuál es la mejor manera de hacerlo (sin entrar manualmente en el archivo .sln)?

Egor Pavlikhin
fuente
¿Está utilizando TFS como su proveedor de control de fuente?
Bermo
¿Quieres renombrar solo la carpeta o todo el proyecto?
Charles Gargent el
Proyecto, carpeta y espacio (s) de nombres.
Egor Pavlikhin

Respuestas:

175

Elimine el proyecto de su solución haciendo clic con el botón derecho en la ventana Explorador de soluciones y seleccionando Eliminar. Mueva toda la carpeta del proyecto, incluidos los subdirectorios donde quiera que vaya. Agregue el proyecto nuevamente a su solución.

Los nombres de espacios de nombres son algo completamente diferente, solo edite el código fuente.

Hans Passant
fuente
66
Eso es lo que hice, pero pensé que hay una manera de hacer todo eso sin eliminar todo el proyecto, lo que me hace volver a agregar todas las dependencias.
Egor Pavlikhin
31
Descargue todos los proyectos dependientes de la solución, antes de eliminar el proyecto que desea mover. De esa manera, no detectan la eliminación y las referencias del proyecto permanecen intactas. Después de mover el proyecto y volver a agregarlo a la solución, puede volver a cargar los proyectos dependientes.
base2
13
No olvide que eliminar un archivo en TFS y luego volver a importarlo en TFS en otra ubicación de directorio o proyecto, hace que se elimine el historial de cambios del archivo.
Paul
Quiero hacerlo sin que pierda el historial de cambios, por lo que aún puedo hacer comparaciones cuando lo desee.
user734028
197

Intenté la sugerencia de eliminar y volver a agregar el proyecto, pero luego arreglar las dependencias puede ser difícil.

Yo uso este enfoque:

  1. Mueve la carpeta del proyecto.
    • Si el proyecto está en control de origen, realice el movimiento utilizando los comandos de control de origen.
  2. Edite el archivo de solución en un editor de texto. Debería haber solo un camino que necesita cambiar.
Igor ostrovsky
fuente
Definitivamente más fácil! Pero, después de mover y editar la solución usando la edición de texto, el archivo de solución se muestra a continuación como un archivo de texto normal. ¿Cómo me deshago de esto?
Abriel
2
"Si el proyecto está en control de fuente, realice el movimiento utilizando los comandos de control de fuente". .. ¿Puedes explicar cómo hacer esto?
Anish V
3
@AnishV Por ejemplo, si usa Git, escriba en git mv ...lugar de mv .... Ver git-mvdocumentación para más información.
cubuspl42
3
En el archivo .csproj necesita actualizar la propiedad SolutionDir, así como corregir todas las rutas para referencias de proyectos y ubicaciones de paquetes nuget. En el archivo .sln, todo lo que necesita hacer es actualizar la ruta al proyecto.
Pete
Esto me ha funcionado. El único 'truco' fue que tuve que cambiar el archivo .sln para que no fuera de solo lectura editarlo y luego marcarlo como de solo lectura nuevamente por razones de seguridad.
JustWannaFly
44
  1. Cierra tu solución en VS2012
  2. Mueve tu proyecto a la nueva ubicación
  3. Abre tu solución
  4. Seleccione el proyecto que no se pudo cargar
  5. En la ventana de herramientas Propiedades, hay una entrada editable "Ruta de archivo" que le permite seleccionar la nueva ubicación del proyecto
  6. Establecer el nuevo camino
  7. Haga clic derecho en el proyecto y haga clic en recargar
Emmanuel
fuente
44
Esto funciona extremadamente bien y parece ser la forma más rápida y fácil, a pesar de las otras respuestas votadas mucho más altas. Hay un artículo aquí: msmvps.com/blogs/deborahk/archive/2010/06/30/…
Mike Rosenblum
@MikeRosenblum El enlace está roto, el nuevo enlace es blogs.msmvps.com/deborahk/…
Roi Gavish
1
No funciona en VS2012. El artículo vinculado también solo menciona VS2010.
bassim
Me funcionó bien en VS2010, incluidas todas mis referencias, excepto 1, que tuve que volver a agregar.
Kristian
@Vasanth En Visual Studio 2019 necesita editar manualmente el archivo .sln para ubicar el proyecto; y posiblemente (probablemente) el archivo .csproj también para hacer referencia a la ubicación correcta de cualquier paquete nuget.
Caltor
3

Lo que funcionó para mí fue:

  1. Eliminar el proyecto de la solución.
  2. Edite el archivo del proyecto con un editor de texto.
  3. Actualice todas las rutas relativas a los "paquetes". En mi caso he tenido que cambiar ..\packagesa ..\..\..\packagesdesde que me mudé el proyecto a una carpeta más profunda.
  4. Cargue el proyecto nuevamente en la solución.
Gonzalo Méndez
fuente
2

Yo tuve el mismo problema. Resolví con mover las referencias y en menos de 15 minutos, sin cambiar las referencias.

Para mí la solución fue simple:

  1. Mueve tus archivos donde lo necesites.
  2. Eliminar la carpeta con el nombre .vs. Debe ser como carpeta no visible.
  3. Abra el archivo de solución (.sln) usando un editor simple como note o notepad ++.
  4. Cambie la referencia donde está su archivo, utilizando la siguiente estructura: si coloca su proyecto en la misma carpeta, elimine la carpeta anterior o la referencia ".. \"; si coloca en una carpeta anterior, agregue la referencia ".. \" o el nombre de la carpeta.
  5. Guarde el archivo con los cambios.
  6. Abra el archivo del proyecto (.csproj) y haga lo mismo, elimine o agregue la referencia.
  7. Guarda los cambios.
  8. Abre el archivo de la solución.

Ejemplos:

En archivo de solución (.sln)

  • Original: Proyecto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.UI", " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "Project (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "," {ED5A561B-3674-4613-ADE5-B11E2E2E11E2 } "

    Nuevo: Proyecto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PATH1.MX.UI", "PATH1.MX.UI \ PATH1.UI.csproj", "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Proyecto (" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ") =" PATH1.DataService "," PATH1. } "

En archivo de proyecto:

  • Original:

    Nuevo:

    Referencia original: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    Nueva referencia: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

Victor David Francisco Enrique
fuente
2

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

  1. VS | Explorador de soluciones | proyecto con el botón derecho | Renombrar (p. Ej., Utils.Foo to Foo).
  2. 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
  3. Realice 1 y 2 para el proyecto de prueba correspondiente (por ejemplo, Utils.Foo.Tests)
  4. VS | Explorador de soluciones | proyectos con el botón derecho (producción y prueba) | Refactorizador | Ajustar espacios de nombres
  5. Es posible que sea necesario actualizar los archivos XAML que usan el proyecto (manualmente o con una búsqueda y reemplazo global adecuada)
  6. Reconstruir todo
  7. ¡¡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).

  1. 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

  2. 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

  1. 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)

  1. 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

  1. 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)

  1. 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>)

  1. 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

  1. 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.

  1. ¡¡Cometer!!
dthal
fuente
1

Es fácil en VS2012; solo use la función de mapeo de cambios:

  1. Cree la carpeta donde desea mover la solución.
  2. Registre todos los archivos de su proyecto (si desea mantener los cambios) o revierta los archivos extraídos.
  3. Cierra la solución.
  4. Abra el Explorador de control de código fuente.
  5. Haga clic con el botón derecho en la solución y seleccione "Avanzado -> Eliminar asignación ..."
  6. Cambie el valor de "Carpeta local" al que creó en el paso 1.
  7. Seleccione "Cambiar".
  8. Abra la solución haciendo doble clic en el explorador de control de código fuente.
Forch
fuente
2
Es decir, si estás usando TFS?
Martin Ba
1

en visual studio comunity 2019, hice lo que dice Victor David Francisco Enrique, pero solo necesitaba eliminar la carpeta .vs invisbile

BWS1986
fuente
0

En VS 2015

  1. Descargue su proyecto en el explorador de soluciones
  2. Crea una nueva solución
  3. Copie los proyectos a la carpeta de la nueva solución.
  4. Haga clic derecho en la solución, agregue el proyecto existente.
  5. Si usa algún marco como MVC, puede que necesite agregar la referencia en el administrador de referencias.
code4j
fuente
0

Me di cuenta de esto, intenta esto, funcionó para mí.

En Visual Studio 2017 Community Edition crea un proyecto en esta ruta "C: \ Users \ mark \ source \ repos \ mipmaps \ mipmaps" Esto creará un problema de acceso al archivo denegado

Ahora, puedes arreglar eso de esta manera.

cierra tu proceso de estudio visual. Luego, encuentre su proyecto y copie la carpeta del proyecto. Pero, primero haga una Subcarpeta Proyectos con nombre dentro de su carpeta de Visual Studio 2017 en documentos. A continuación, pegue la carpeta del proyecto dentro de su carpeta de proyectos de Visual Studio 2017, no la carpeta principal de Visual Studio 2017, debe ir a la Subcarpeta llamada Proyectos. A continuación, reinicie Visual studio 2017 Luego, elija Abrir solución de proyecto Luego, encuentre su proyecto que pegó en su carpeta de Proyectos de visual studio 2017 Luego limpie el Proyecto y vuelva a generarlo, Debería compilar y compilar perfectamente. Espero que esto haya ayudado a nadie más. No estoy seguro de por qué Microsoft pensó que construir sus proyectos en una ruta donde necesita permisos de escritura está más allá de mí.

Markk
fuente
0

Quería que los cambios en Git se mostraran como movimientos / cambios de nombre en lugar de eliminar y agregar. Así que hice un combo de lo anterior y esta publicación .

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

Y ajuste las rutas de los proyectos y de los ensamblajes desde los paquetes nuget en el archivo sln a través de un editor de texto.

Bob Lokerse
fuente
0
  1. Copie la carpeta del proyecto a un nuevo destino
  2. Elimine su proyecto de la solución (haga clic con el botón derecho en el proyecto en "Explorador de soluciones" y elija "Eliminar")
  3. Luego agregue el proyecto existente a la solución (haga clic con el botón derecho en el proyecto en "Explorador de soluciones" y elija "Agregar" y luego "Proyecto existente")
  4. Cambiar la ruta a la carpeta "paquetes" en el archivo "YourProjectName.csproj" (Abrir en el bloc de notas y cambiar las rutas de los paquetes vinculados)
Otro mi
fuente
0

Esto funcionó para mí vb2019. Copié mi carpeta de proyecto de origen. Luego pegué el proyecto y cambié el nombre de la carpeta a lo que sea. Para romper los lazos con la carpeta del proyecto fuente, cambié temporalmente el nombre de la carpeta fuente. Abrí mi proyecto de destino. Las rutas a los formularios y módulos se volvieron a descubrir en la carpeta local. Revisé todos mis formularios y módulos para asegurarme de que funcionaran. Ejecuté el proyecto. Cerré el proyecto. Cambié el nombre de la carpeta del proyecto de origen a nombre original. Puedo abrir ambos proyectos al mismo tiempo sin errores.

Arenoso
fuente