¿Cómo cambiar el espacio de nombres de todo el proyecto?

104

Estoy modificando la aplicación de demostración de este artículo: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

Necesito actualizar todos los archivos para usar mi espacio de nombres, por ejemplo, ahora el archivo se encuentra aquí:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs

está usando tal espacio de nombres:

namespace DemoApp.ViewModel
{
/// <summary>
/// The ViewModel for the application's main window.
/// </summary>
public class MainWindowViewModel : WorkspaceViewModel

Necesito mover el archivo aquí (eliminar la carpeta DemoApp):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs

y también para usar el espacio de nombres correcto:

namespace MyApp.ViewModel
{
....

¿Cómo hacer eso en Visual Studio 2010?

Actualizar bien aquí es posible duplicar el espacio de nombres del proyecto de cambio en Visual Studio. Ahora sé cómo cambiar el espacio de nombres del proyecto, pero ¿cómo mover archivos en el sistema de archivos? (deshacerse de la carpeta "DemoApp")

javapowered
fuente
4
Al igual que un FYI, no es necesario que los espacios de nombres coincidan con la estructura de carpetas en .NET, no es necesario.
James Michael Hare
1
Como dijo James, no es obligatorio ... pero me preguntaría por qué alguien no "terminó el trabajo" en una aplicación en la que necesitaba trabajar.
NotMe
1
Con respecto al movimiento de archivos ... Um, cortar / pegar y arrastrar / soltar generalmente funciona dentro del administrador de soluciones de Visual Studio ... o incluso simplemente cambiar el nombre de la carpeta o eliminar. dependiendo de lo que realmente estés intentando hacer.
NotMe

Respuestas:

124

Me imagino que un simple Reemplazar en archivos ( Ctrl+ Shift+ H) hará el truco; simplemente reemplácelo namespace DemoAppcon namespace MyApp. Después de eso, cree la solución y busque errores de compilación para identificadores desconocidos. Todo lo que esté completamente calificado DemoAppdeberá cambiarse a MyApp.

Adam Maras
fuente
62
Importante; cambie el espacio de nombres predeterminado en las propiedades del proyecto también; esto controla el espacio de nombres para cosas como resx
Marc Gravell
Tengo un par de archivos XAML que representan ventanas de WPF, por lo que esto no me funcionará.
Pieter
6
También debe ejecutar Reemplazar en cualquier usingdeclaración para cambiar de using DemoAppa using Myapp.
swbandit
5
también cambie el nombre de <add namespace = "OldNameSpace" /> en todos los archivos web.config en la carpeta de vistas
neo112
@Pieter Debería poder reemplazar todo para toda la aplicación, seguido de una actualización en las propiedades como sugiere Marc, luego cierre la solución y ábrala nuevamente; de ​​lo contrario, VS tiene un comportamiento inexplicable con una finalización automática.
Eric
153

Vaya a algún lugar donde el espacio de nombres esté declarado en uno de sus archivos. Coloque el cursor en la parte del espacio de nombres que desea cambiar y presione F2. Esto debería cambiar el nombre del espacio de nombres en cada archivo. ¡Al menos, funcionó en mi pequeño proyecto de demostración que creé para probar esta respuesta!

Dependiendo de su versión de VS, el acceso directo también podría ser Ctrl- R, Ctrl- R.

Amy
fuente
1
por alguna razón no funciona para mí. Presiono F2 y no pasa nada.
Java desarrollado el
6
@javapowered, tu tecla de acceso rápido se ha personalizado. Busque las opciones de VS para las suyas. Hoy el mío es CTRL-R CTRL-R.
Amy
4
Nota: Aunque todavía prefiero este método, [comprensiblemente] no reemplazó las referencias en las vistas ni en el archivo web.config contenido en el directorio Vistas /. Solo ten cuidado con esos.
Wiseguy
3
Para una versión que no debería depender de los cambios de teclas de acceso rápido, simplemente haga clic con el botón derecho en el nombre del espacio de nombres y elija renombrar.
Kat
3
Desafortunadamente, esto no funciona si desea que el nuevo nombre incluya un .carácter.
Botond Balázs
27

Simplemente haga clic derecho en la solución, vaya a propiedades, cambie el "espacio de nombres predeterminado" en la sección "Aplicación".

ingrese la descripción de la imagen aquí

Anuja Lamahewa
fuente
3
¿Cambia el espacio de nombres en archivos existentes?
Priyesh Kumar
5
No, no lo hará.
Anuja Lamahewa
3

Ctrl+Shift + Hno es la verdadera solución.

Puede usar Resharper para cambiar todas las definiciones de espacios de nombres en su solución. Esta es la mejor forma que probé antes.

https://www.jetbrains.com/resharper/features/code_refactoring.html

Selçuk Ermaya
fuente
2
el reafilado requiere una máquina de escritorio cara y completa
Ivan G.
@IvanG. bueno, muchos proyectos comerciales también requieren desarrolladores costosos en toda regla, por lo que una máquina y una licencia R # no son demasiado costosas en el esquema más amplio de las cosas;) Si necesita verificar que este método (o el de Adam o Amy) haya funcionado correctamente , puede consultar Buscar problemas de código
StuartLC
1
@StuartLC, desafortunadamente, los días de un lugar de trabajo dedicado y una gran computadora de escritorio se han ido, uso una computadora portátil realmente poderosa para mi desarrollo y resharper prácticamente lo mata, por lo que no se lo recomendaría a nadie que valore el tiempo.
Ivan G.
Chicos que pueden usar para cambiar el nombre de forma gratuita, ya saben :-) Instálelo, active la versión de prueba gratuita,
cámbiele el
1

Revisé la estructura de carpetas con una herramienta llamada BareGrep para asegurarme de tener todos los cambios en el espacio de nombres. Es una herramienta gratuita que le permitirá buscar archivos en una estructura de archivo específica.

Michael Murphy
fuente
coincidencia de archivos REGEX: (.exe) | (.dll) | (.cache) | (.pdb) luego invierta la coincidencia . repita este patrón para excluir otros binarios, etcétera.
twobob
1

Puede utilizar ReSharper para la refactorización del espacio de nombres. Dará 30 días de prueba gratuita. Cambiará el nombre según la estructura de carpetas.

Pasos:

1) Haga clic con el botón derecho en el proyecto / carpeta / archivos que desea refactorizar.

2) Si ha instalado ReSharper, obtendrá una opción Refactor-> Ajustar espacios de nombres .... Haga clic en esto.

ingrese la descripción de la imagen aquí

Cambiará automáticamente los espacios de nombres de todos los archivos seleccionados.

chindirala sampath kumar
fuente
Gracias ... pude hacer esto.
sgowd
0

Intenté todo, pero encontré una solución que realmente funciona. Crea una solución independiente con un nuevo nombre de espacio de nombres y así sucesivamente.

  1. En el formulario principal, busque el nombre del espacio de nombres -> haga clic derecho -> Refactorizar -> Cambiar nombre y seleccione un nuevo nombre. Marque todas las casillas y haga clic en Aceptar.

  2. En el explorador de soluciones, cambie el nombre de la solución a un nuevo nombre.

  3. En el explorador de soluciones, cambie el nombre del proyecto por un nuevo nombre.

  4. Cierre VS y cambie el nombre de la carpeta (en total commander, por ejemplo) en la carpeta de la solución a un nuevo nombre.

  5. En el archivo .sln, cambie el nombre antiguo por uno nuevo.

  6. Eliminar archivos .suo antiguos (ocultos)

  7. Inicie VS y cargue el proyecto

  8. Proyecto -> propiedades -> cambie el nombre del ensamblado y el espacio de nombres predeterminado a un nuevo nombre.

Maros
fuente
0

Sé que es bastante tarde, pero para cualquiera que quiera hacerlo de ahora en adelante, espero que esta respuesta sea de alguna ayuda. Si tiene CodeRush Express( la versión gratuita y una "imprescindible") instalada, ofrece una forma sencilla de cambiar el espacio de nombres de un proyecto. Simplemente coloque el cursor en el espacio de nombres que desea cambiar y aparecerá un smart tag(un pequeño cuadro azul) debajo de la namespacecadena. Puede hacer clic en ese cuadro o presionar las Ctrl +teclas para ver la Renameopción. Selecciónelo y luego escriba el nuevo nombre para el espacio de nombres amplio del proyecto, haga clic Applyy seleccione qué lugares en su proyecto desea que cambie, en el nuevo cuadro de diálogo y OKeso. ¡Hecho! :-)

Kunal
fuente
En mi experiencia, CodeRush Express no es "imprescindible" (opinión personal). Es útil para cosas como esta.
Maarten
0

Cuando quise cambiar el espacio de nombres y el nombre de la solución, hice lo siguiente:
1) cambié el espacio de nombres seleccionándolo y renombrándolo e hice lo mismo con el nombre de la solución
2) hice clic en la bombilla y renombré todas las instancias del antiguo espacio
de nombres 3 ) eliminó todos los proyectos de la solución
4) cerró el estudio visual
5) cambió el nombre de todos los proyectos en el explorador de Windows
6) abrió el estudio visual y agregó todos los proyectos nuevamente
7) cambió el nombre de los espacios de nombres en todos los proyectos en sus propiedades
8) eliminó la carpeta bin ( de todos los proyectos)
9) vuelva a construir el proyecto

Eso funcionó para mí sin ningún problema y mi proyecto también tenía control de fuente. Todo estuvo bien después de presionar esos cambios en el control remoto.

przemas
fuente