Forma adecuada de cambiar el nombre de la solución (y directorios) en Visual Studio


415

Tengo una solución Visual Studio bastante complicada (2010, pero no debería importar) que necesito cambiar el nombre.

Quiero cambiar el nombre de las carpetas para que coincida con el nuevo nombre de la solución, pero no puedo encontrar una manera de refactorizar los nombres de las carpetas automáticamente, y revisar cada archivo de proyecto será doloroso.

¿Hay alguna forma oficial de hacer esto? Alternativamente (y mucho menos preferiblemente), ¿hay herramientas gratuitas para lograr esto?



13
¿Cómo es esto un duplicado? ¡Está pidiendo un cambio de nombre de una solución, no un proyecto!
Vikingo

Respuestas:


375

Editar manualmente el archivo .sln

Este método tiene como objetivo cambiar el nombre del directorio para el proyecto, como se ve en el Explorador de Windows.

Este método no sufre los problemas en el método Eliminar / agregar archivo de proyecto a continuación (desaparecen las referencias), pero puede ocasionar problemas si su proyecto está bajo control de origen (consulte las notas a continuación). Es por eso que el paso 2 (copia de seguridad) es tan importante.

  1. Cierra Visual Studio.
  2. Cree una copia de seguridad de su archivo .sln (siempre puede retroceder).
  3. Imagine que desea cambiar el nombre del directorio Project1a Project2.
  4. Si no usa el control de origen, cambie el nombre de la carpeta de Project1a Project2usando el Explorador de Windows.
  5. Si usa el control de fuente, cambie el nombre de la carpeta de Project1a Project2usando las funciones proporcionadas por el control de fuente. Esto conserva el historial del archivo. Por ejemplo, con TortoiseSVN, haga clic derecho en el archivo, seleccione TortoiseSVN .. Rename.
  6. En el archivo .sln, edite todas las instancias de Project1be Project2, utilizando un editor de texto como NotePad .
  7. Reinicie Visual Studio, y todo funcionará como antes, pero con el proyecto en un directorio diferente.

También puede ver el cambio de nombre de la solución de forma manual o posterior que describe este proceso manual .

Ventajas

  • Puede hacer que el directorio dentro del Explorador de Windows coincida con el nombre del proyecto dentro de la solución.
  • Este método no elimina ninguna referencia de otros proyectos a este archivo (una ventaja sobre el método Eliminar / agregar archivo de proyecto , vea mi otra respuesta a continuación).

Advertencias

  • Es importante hacer una copia de seguridad de todo en un archivo .zip antes de renombrar cualquier cosa, ya que este método puede crear problemas con el control de código fuente.
  • Si su proyecto está bajo control de origen, puede crear problemas si cambia el nombre de los archivos o directorios fuera del control de origen (usando el Explorador de Windows). Es preferible cambiar el nombre del archivo usando el marco de control de origen , si puede, para preservar el historial de ese archivo (consulte el menú contextual con un clic derecho; puede tener una función para cambiar el nombre del archivo).

Actualización 2014-11-02

ReSharper ha agregado un método automatizado para lograr el mismo resultado que el método manual anterior. Si el espacio de nombres está subrayado con una línea azul ondulada, haga clic en el icono de la pirámide de acción para:

  • Cambie el nombre del espacio de nombres para que coincida con el nombre del directorio en el Explorador de Windows, o;
  • Cambie el nombre del directorio en el Explorador de Windows para que coincida con el espacio de nombres.

En el segundo caso, la palabra final define el nuevo nombre del directorio en el Explorador de Windows, por ejemplo, si cambiamos el espacio de nombres a ViewModel2, ofrecería mover el archivo a la carpeta ViewModel2.

Sin embargo, esto no necesariamente actualizará los archivos en el control de origen, por lo que es posible que aún tenga que usar el método manual.

ingrese la descripción de la imagen aquí

Actualizar 2018-01-31

Probado con Visual Studio 2008, 2010, 2012, 2013, 2015, 2017 Actualización 1, 2, 3, 4, 5.

Actualización 2020-05-02

Probado con Visual Studio 2019.


2
nota: incluso con VS2012 es necesario reiniciar porque de lo contrario puede confundirse y obtener errores estúpidos
Simon_Weaver

1
"Si tiene el control de la fuente, perderá el historial del archivo" esto es una desventaja importante para nosotros (auditoría, etc.) ¿Hay rutas sugeridas mientras se mantiene el historial?
dougajmcdonald

23
Visual Studio es un programa tan poderoso, pero esta característica no está incluida. wow ..
Luca Steeb

2
Incluso después de seguir la solución descrita por @Contango, todavía recibía un error: el atributo OwinStartup descubierto en el ensamblaje ... nuevo nombre de inicio que estaba en conflicto con el nombre anterior. Revisé las carpetas obj y bin y eliminé cualquier archivo con el nombre anterior, dejando todo lo demás intacto. ¡Reinicié vs con mi proyecto recién nombrado y funcionó como un encanto! ¡Gracias!
nocturnos2

2
@LucaSteeb Sí, según los informes, 2012 fue de unos 50 millones de líneas de código. #monolítico
Chiramisu

158

Estos son los pasos que debe seguir para cambiar el nombre de una solución:

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto, seleccione Cambiar nombre e ingrese un nuevo nombre.
  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Propiedades. En la pestaña Aplicación, cambie el "Nombre de ensamblado" y el "Espacio de nombres predeterminado".
  3. En el archivo cs principal (o cualquier otro archivo de código), cambie el nombre de la declaración del espacio de nombres para usar el nuevo nombre. Para esto, haga clic derecho en el espacio de nombres y seleccione Refactorizar> Cambiar nombre ingrese un nuevo nombre. Por ejemplo: namespace WindowsFormsApplication1
  4. Cambie AssemblyTitle y AssemblyProduct en Properties / AssemblyInfo.cs.

    [assembly: AssemblyTitle("New Name Here")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("New Name Here")]
    [assembly: AssemblyCopyright("Copyright ©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
  5. Elimine los directorios bin y obj físicamente.

  6. Cambie el nombre del directorio de la carpeta física del proyecto.

  7. Abra el archivo SLN (dentro del bloc de notas o cualquier editor) y cambie la ruta al proyecto.

  8. Limpia y reconstruye el proyecto.


1
¡Funciona perfectamente! Pero debe administrarlo Datasetmanualmente (si se ha adjuntado a su proyecto).
Sujith HS

2
¡Trabajos! También tuve que cambiar el nombre de los archivos .sln y .suo. Y descubrí que el paso 4 ya fue realizado por uno de los pasos anteriores en mi VS 2010
parches del

3
Estoy un poco confundido sobre si se está refiriendo o no a la Solución o al Proyecto en el paso 1. Quiero cambiar el nombre de ambos, cada uno con un nombre diferente. ¿Cuál sería el nuevo espacio de nombres, el nuevo nombre de la solución o el nombre del proyecto? Gracias por aclararme esto.
Alan Fisher

1
Esto también funcionó para mí (usando VS2013), pero perdió las rutas del proyecto en el \Packages\repositories.configarchivo.
Ted

1
Antes de intentar volver a abrir la solución, utilicé una herramienta de búsqueda, Agent Ransack, para buscar en todos los archivos y carpetas cualquier referencia al nombre de la solución / proyecto anterior y corregirlos. Había varios lugares donde necesitaba hacer esto.
Andy G

31

Las operaciones de cambio de nombre en Visual Studio solo cambian el nombre de archivo, es decir, para un proyecto, * .prj y para una solución * .sln. Deberá cambiar el nombre de las carpetas por separado utilizando el sistema de archivos, y deberá eliminar y leer los proyectos, ya que tendrán nuevos nombres de carpetas. Sin embargo, tenga en cuenta que los archivos de solución y proyecto son respectivamente archivos de texto y xml. Puede escribir su propio programa que los analice y cambie el nombre de los nombres de las carpetas, los nombres de los archivos y repare los archivos del proyecto / solución internamente.


1
¿Hay herramientas gratuitas disponibles que ya hacen esto? No pude encontrar nada.
David Pfeffer

55
La única cosa que podría ayudar es CoolCommands 4.0 "Añadir Proyectos desde carpeta", por lo que después de haber eliminado / a llamarse las carpetas de proyecto se les puede añadir todo de vuelta a la vez: sharptoolbox.com/tools/coolcommands
AaronLS

1
Sublime Text 2 tiene funciones de búsqueda y reemplazo de expresiones regulares que hacen que sea más fácil lidiar con esto.
jfyelle

22

También puede exportar plantilla y luego crear un nuevo proyecto a partir de la plantilla exportada cambiando el nombre como prefiera


1
Esto funcionó para mí también. Sin embargo, tuve que hacer un ajuste. Estaba usando el marco de la entidad en una aplicación web, y dejaba los viejos archivos .dll bajo el nombre original del proyecto, así que tuve que buscar por qué recibía algún tipo de error duplicado para las clases de la tabla. Una vez que eliminé los del proyecto, funcionó bien. Espero que esto ayude. Y gracias, Edoardo!
Steve

2
Esta es absolutamente la mejor manera de hacerlo, consulte msdn.microsoft.com/en-us/library/… para ver dónde mover su plantilla exportada para encontrarla en el cuadro de diálogo "Nuevo proyecto".
Ares Ou

13

A continuación se muestra una forma paso a paso de cambiar el nombre de su solución completa en Visual Studio 2013

Asumiendo que estamos cambiando un proyecto llamado "HelloWorld.ui" a "Section1to5.ui"

  1. Vaya al explorador de soluciones (captura de pantalla a continuación), haga clic derecho en el proyecto al que desea cambiarle el nombre y seleccione "Cambiar nombre". Ingrese el nuevo nombre que desee.

Captura de pantalla del Explorador de soluciones

  1. Haga clic derecho en el proyecto que acaba de cambiar de nombre y haga clic en "Propiedades". En la pestaña Aplicación, cambie el "Nombre de ensamblado" y el "Espacio de nombres predeterminado".

  2. En el archivo principal Program.cs (o cualquier otro archivo de código que haya creado), cambie el nombre de la declaración del espacio de nombres para usar el nuevo nombre. Para esto, haga clic derecho en el espacio de nombres y seleccione Refactorizar> Cambiar nombre ingrese un nuevo nombre. Por ejemplo:

    espacio de nombres HelloWorld.ui ----> espacio de nombres Section1to5.ui

  3. A continuación, expanda las "Propiedades" y haga doble clic en el archivo AssemblyInfo.cs. Notará el siguiente fragmento de código:

[assembly: AssemblyTitle("HelloWorld.ui")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("HelloWorld.ui")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Debe cambiar AssemblyTitle y AssemblyProduct en Properties / AssemblyInfo.cs al nuevo nombre, en este ejemplo de "HelloWorld.ui" a "Section1to5.ui". Una vez que haya terminado de cambiar el nombre, guarde y cierre Visual Studio.

  1. En el directorio del proyecto, vaya a la carpeta "HelloWorld.ui" y elimine los directorios "bin" y "obj".

  2. Una vez que haya terminado, cambie el nombre de la carpeta "HelloWorld.ui" por el nuevo nombre del proyecto.

  3. Abra el archivo de soluciones renombrado con un editor de texto como Notepad o Notepad ++ y edite la siguiente línea:

    Proyecto ("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld.ui", "HelloWorld.ui \ HelloWorld.ui.csproj", "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"

Reemplace todas las instancias de "HelloWorld.ui" por el nuevo nombre que ha seleccionado para su proyecto, en este caso "Section1to5.ui". Esto cambia la ruta del proyecto al directorio renombrado en el paso 6.

  1. Abra el archivo de soluciones con Visual Studio, y limpie y reconstruya el proyecto.

  2. Puede notar que el botón "Debug / Run" ha sido reemplazado por el botón "Adjuntar". Si esto sucede, simplemente haga clic derecho en el proyecto y elija la opción "Establecer como proyecto de inicio". Alternativamente, haga clic en Herramientas> Personalizar> Comandos> Agregar comando> Depurar y agregue el botón.

Has terminado de renombrar el proyecto, si tienes alguna duda, no dudes en publicar y estaré encantado de ayudarte.


6

Elimine sus subcarpetas bin y obj para eliminar una carga de referencias incorrectas y luego use windows para buscar el nombre antiguo.

Editar cualquier código o archivo xml encontrado y reconstruir, debería estar bien ahora.




4

Probé el Visual Studio Project Renamer, pero arrojó excepciones en los pocos casos en que lo probé.

He tenido buen éxito con CopyWiz .

No estoy afiliado de ninguna manera con ellos, y aún no lo he pagado, pero es posible que tenga que hacerlo pronto, ya que es la única herramienta que parece funcionar para mis proyectos C # y C ++. Sin embargo, espero que ganen un poco de dinero y sigan mejorando.


4

Eliminar / agregar método de archivo de proyecto

Este método tiene como objetivo cambiar el nombre del directorio para el proyecto, como se ve en el Explorador de Windows.

  1. Haga una copia de seguridad de todo su proyecto usando algo como GIT, SVN o WinZip (¡importante!).
  2. Dentro de la solución en Visual Studio, elimine el proyecto.
  3. Cambie el nombre del directorio en el Explorador de Windows.
  4. Agregue el proyecto nuevamente dentro de Visual Studio.

Ventajas

  • Puede hacer que el directorio dentro del Explorador de Windows coincida con el nombre del proyecto dentro de la solución.

Desventajas

  • Si elimina una biblioteca, elimina cualquier referencia a dicha biblioteca de otros proyectos. La solución puede no compilarse después de esto, hasta que vuelva a agregar las referencias a dicha biblioteca (esto es bastante fácil). Esta es la razón por la cual el paso 1 (copia de seguridad) es tan importante.
  • Si tiene control de fuente, perderá el historial del archivo.

Hacer clic derecho sobre un proyecto y seleccionar "Abrir carpeta en el Explorador de Windows" es útil para realizar un seguimiento de dónde se almacena el proyecto mientras realiza este proceso.


44
WinZip ??? Espero que estés usando un control de fuente real y no hagas copias de seguridad de tu código en archivos zip. Si usted, o cualquier otra persona que lea esto, lo está, entonces visite try.github.io y pruebe un proyecto de prueba. ¡No volverás!
Matt Klein

2
Leí tu comentario Señor @MattKlein y tenías razón: D ¡Gracias!
Jeancarlo Fontalvo

@Matt Klein Totalmente de acuerdo, actualizado para recomendar GIT o SVN también.
Contango

3

Usted puede:

  1. haga clic en archivo-> nuevo -> crear proyecto a partir de proyecto existente

  2. seleccione su archivo original, por ejemplo. solución 1 e ingrese el nuevo nombre de archivo solución 2

  3. cambiar el nombre del proyecto en la nueva solución 2


Me gusta bastante este enfoque, ¿se rechaza por una razón en particular?
Coops

bloqueé mi máquina cerca del final - en Visual Studio 2017
klewis

3

Si tiene problemas para cargar proyectos compartidos, como Xamarin, recuerde cambiar la referencia a las bibliotecas compartidas en los archivos csproj. Desarrollé un juego CocosSharp y los proyectos Droid / iOS / WP81 no querían cargar. Tuve que cambiar debajo de la línea en cada archivo csproj (Driod / iOS / WP81) que hacía referencia a Shared lib. Esto se debió al cambio de los nombres de las carpetas, así que reemplace YOUR_PREVIOUS_NAMESPACE con sus nuevos nombres de carpetas.

<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />

También noté que para proyectos .Driod, el nombre del ensamblado en las propiedades del proyecto no se puede cambiar usando Visual Studio (uso 2015). Tuve que cambiar el nombre del ensamblaje manualmente en el archivo .Droid.csproj.

<AssemblyName>YourNameSpace</AssemblyName>

Luego cargué la solución y en la vista de propiedades del proyecto apareció un nuevo nombre. Después de reconstruir dll con ese nombre se generó.


2

Si está creando un sitio web en Visual Studio 2010. Puede cambiar el nombre del proyecto de la siguiente manera.

Paso 1: en Visual Studio 2010, el archivo SLN se almacenará en la carpeta del proyecto dentro de Visual studio 2010 y los archivos de origen se almacenarán en la carpeta del sitio web dentro de Visual Studio 2010.

Paso 2: cambie el nombre de la carpeta haciendo clic con el botón derecho en esa carpeta hacia adelante con Cambiar nombre que contiene su proyecto SLN.

Paso 3: Cambie el nombre del nombre del archivo SLN haciendo clic derecho en ese archivo SLN hacia adelante con Cambiar nombre.

Paso 4: cambie el nombre de la carpeta que contiene el origen de ese archivo SLN en el sitio web en Visual Studio 2010.

Paso 5: Finalmente, haga doble clic en su archivo SLN y cambie la raíz de su carpeta de origen SLN.


2

La única solución que funciona para mí en Visual Studio 2013 en un proyecto WEB:

Digamos que quiero cambiar el nombre de "proyecto1" para que sea "proyecto2". Digamos que la ruta física a mi archivo .sln es: c: \ my \ path \ project1 \ project1.sln

entonces la ruta a mi archivo .csproj así como las carpetas bin y obj deben ser: c: \ my \ path \ project1 \ project1 \

  1. Abra la solución en VS haciendo doble clic en el archivo project1.sln.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto (¡NO la solución!), Seleccione Cambiar nombre e ingrese un nuevo nombre.

  3. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Propiedades. En la pestaña Aplicación, cambie el "Nombre de ensamblado" y el "Espacio de nombres predeterminado".

  4. En el archivo CS principal (o cualquier otro archivo de código como Global.asax, por ejemplo), cambie el nombre de la declaración del espacio de nombres para usar el nuevo nombre. Para esto, haga clic derecho en el espacio de nombres y seleccione Refactorizar> Cambiar nombre ingrese un nuevo nombre. Por ejemplo:

proyecto de espacio de nombres1

4.1 En el Explorador de soluciones, haga clic con el botón derecho en el proyecto (¡NO la solución!), Seleccione Cambiar nombre e ingrese un nuevo nombre.

  1. Asegúrese de que: AssemblyTitle y AssemblyProduct en Properties / AssemblyInfo.cs estén configurados con el nuevo nombre ("project2").

1 [ensamblaje: AssemblyTitle ("New Name Here")] 2 [ensamblaje: AssemblyDescription ("")] 3 [ensamblaje: AssemblyConfiguration ("")] 4 [ensamblaje: AssemblyCompany ("")] 5 [ensamblaje: AssemblyProduct (" Nuevo nombre aquí ")] 6 [conjunto: AssemblyCopyright (" Copyright © 2013 ")] 7 [conjunto: AssemblyTrademark (" ")] 8 [conjunto: AssemblyCulture (" ")]

  1. Cierra el Visual Studio.

  2. Elimine los directorios bin y obj físicamente.

  3. Cambie el nombre de la carpeta principal y la carpeta de origen al nuevo nombre (proyecto2):

En el ejemplo: c: \ my \ path \ project1 \ project1

será: c: \ my \ path \ project2 \ project2

  1. Cambie el nombre del archivo SLN haciendo clic con el botón derecho en ese archivo SLN hacia adelante con Cambiar nombre.

  2. Luego, finalmente abra el archivo SLN (dentro del bloc de notas o cualquier editor) y copie y reemplace (Ctrl + h) cualquier nombre antiguo con el nuevo nombre.

  3. Abra VS y haga clic en CONSTRUIR -> Solución limpia

  4. haga clic en Build -> Build solution y luego F5 para ejecutar ...

  5. Nota 1: Si obtiene algo como esto: Error de compilación CS0246: No se pudo encontrar el tipo o el nombre del espacio de nombres 'proyecto2' (¿le falta una directiva de uso o una referencia de ensamblado?)

Archivo de origen: c: \ Users \ Username \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs

Luego vaya a la carpeta "Archivos temporales de ASP.NET" y elimine todo.

  1. Nota 2: Si está intentando "guardar como" en un nuevo proyecto con nombre y mantener también el anterior, considere duplicar su base de datos modificando las cadenas de conexión en web.config y también reiniciando las migraciones si tiene una en el proyecto.

2

Soy nuevo en VS. Acabo de tener el mismo problema: necesitaba cambiar el nombre de un proyecto iniciado después de un par de semanas de trabajo. Esto es lo que hice y funcionó.

  1. Por si acaso, haga una copia de seguridad de su carpeta Proyecto, aunque no la tocará, ¡pero por las dudas!
  2. Cree un nuevo proyecto y guárdelo utilizando el nombre que desea para su proyecto 'nuevo', es decir, el nombre al que desea cambiar su proyecto 'antiguo'.
  3. Constrúyelo. Después de eso, tendrá un Proyecto con el nombre que desea pero que no hace más que abrir una ventana (una aplicación de Windows Form en mi caso).
  4. Con el nuevo proyecto abierto, haga clic en Proyecto-> Agregar ítem existente y use el Explorador de Windows para localizar su carpeta 'antigua' Proyecto y seleccione todos los archivos en ... Visual Studio xxx \ Projects \ oldApp \ oldApp
  5. Seleccione todos los archivos allí (.vb, .resx) y agréguelos a su 'nuevo' Proyecto (el que ya debería estar abierto).
  6. Casi el último paso sería abrir su archivo de Proyecto usando el
    Explorador de soluciones y en la primera pestaña cambie el formulario de inicio predeterminado al formulario que debería ser.
  7. Reconstruir todo.

Tal vez más pasos pero menos o nada de escribir, solo algunos clics del mouse. Espero eso ayude :)




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.