Pregunta ¿Cuál es la mejor manera de cambiar el nombre de un espacio de nombre en una aplicación c # grande?


Primero, un poco de fondo.

Actualmente, los espacios de nombres y los ensamblados en nuestra base de código (~ 60 ensamblajes, miles de clases) se parecen a

WidgetCompany.Department.Something

Ahora nos hemos separado de manera que estamos vendiendo el software que maneja una WidgetCompany, por lo que nos gustaría cambiar el nombre de los espacios de nombres y ensamblajes

NewCompany.Something

En circunstancias normales, probablemente solo me quedaré con el antiguo espacio de nombres, pero el problema es que nuestros clientes no quieren ver el nombre de uno de sus competidores en ninguna parte de la aplicación. En el caso de que vean un rastro de pila, propiedades de ensamblaje, etc., no debería aparecer. No está destinado a ocultar a nuestros asociados o hacer algo siniestro, solo debemos asegurarnos de que las personas sepan que somos una entidad separada, una administración separada, y que no necesitan preocuparse por la información compartida, etc.

Ahora la pregunta. ¿Cuál es la mejor manera de realizar este tipo de cambio de nombre abarcando todo? Lo siguiente necesitaría cambiar:

  • Espacio de nombre para (casi) cada clase en la aplicación
  • Cada using declaración en la aplicación que hace referencia a los nombres antiguos
  • Estructura de carpetas para cada proyecto
  • Referencias entre proyectos que dependen de una estructura de carpetas modificada
  • .Sln archivos que hacen referencia a la estructura de carpetas modificadas
  • Cualquier referencia a esas clases que están completamente calificado (debe ser pocos y muy Entre)
  • Cualquier referencia a esos clases en archivos de configuración xml (config secciones, etc.)
  • AssemblyInfo.cs archivos para cada ensamblaje
  • AssemblyName en cada archivo .csproj

¿Estoy atrapado con la estrategia de buscar, reemplazar, rezar o hay algo mejor?


32
2018-01-26 19:42


origen


Respuestas:


Haga clic con el botón derecho en su espacio de nombres actual y seleccione Refactorizar -> Cambiar nombre y cambie el nombre en la ventana emergente que aparece después de un tiempo. Ingrese su nuevo nombre y haga clic en Aceptar.

Si tiene varias profundidades para su espacio de nombres, entonces Visual Studio no le permitirá escribir un punto. Sin embargo, si copia y pega un punto, a pesar de una advertencia, hará el negocio.


31
2018-01-26 19:52



ReSharper. Obtenga la versión 5.1 de JetBrains de forma gratuita durante 30 días (tiempo más que suficiente para hacer su cambio de nombre). Coloque el cursor sobre el espacio de nombre que desea cambiar y presione Ctrl-R dos veces (ReSharper Rename). Funcionará con un espacio de nombres de cualquier nivel profundo y convertirá el uso de ese espacio de nombres al nuevo. Sin embargo, deberá cambiar cada espacio de nombre único en su solución (a menos que vaya con Buscar / Reemplazar)


8
2018-01-26 20:20



Primero lo intentaría Refactor->Rename opción. Pero como se menciona en el comentario de otras respuestas, no funciona tan bien (o no he encontrado cómo hacerlo funcionar). Por lo tanto, prefiero utilizar el siguiente escenario, especialmente si desea agregar algún espacio de nombres adicional.

1) Cambie el nombre de su espacio de nombres raíz (WidgetCompany) a algo así como NAMESPACE_TO_BE_REPLACED utilizando Refactor-Rename
2) Reemplazar NAMESPACE_TO_BE_REPLACED con su espacio de nombre final (NewCompany.WidgetSoftware) usando el diálogo find-n-replace

Y no olvide cambiar el nombre de proyectos, espacios de nombres predeterminados, etc.


3
2018-01-26 20:07



Si tiene ReSharper:

  1. Haga clic derecho proyecto, Propiedades. Cambiar el espacio de nombres predeterminado a deseado espacio de nombres

  2. Haga clic derecho proyecto, Refactor -> Ajustar el espacio de nombres para actualizar todo los espacios de nombres para usar el espacio de nombres predeterminado

Entonces solo deja que haga su magia.


2
2017-11-23 23:08



  • Abra una clase aleatoria en [WidgetCompany.Department.Something]
  • Editar-> Buscar y reemplazar-> Reemplazar en archivos
  • Escriba "WidgetCompany.Department.Something" en Encontrar que zona
  • Escriba "NewCompany.Something" en Reemplazar con zona
  • Seleccione el proyecto actual en Pase a ver zona.
  • Reemplaza todo

1
2017-10-24 10:17