Problema

A la hora de indicar el namespace por defecto, normalmente utilizamos el mismo que los nombres de los ensamblados. Por ejemplo en el caso de módulos para DNN este nombre suele ser Aporta.Modules.<NombreModulo>. En Visual Studio 2013, a la hora de cambiar este ensamblado por defecto, nos puede dar un error System.Runtime.InteropServices.ExternalException.

Solución

la solución viene en 2 pasos:

  1. Hay que cambiar el ensamblado por defecto en el fichero ‘.csproj’
  2. Hay que refactorizar todo el proyecto para que nuestras clases esten en el nuevo namespace

Ensamblado por defecto

En la ventana Solution Explorer, haciendo click derecho sobre el nodo del proyecto en cuestión, pulsaremos unload project. Esto nos dejará el nodo del proyecto sin nada bajo él. Si volvemos a hacer click derecho sobre él veremos (y haremos click en) la opcion Edit <NombreProyecto>.csproj. Esto nos abrirá un fichero xml que no es mas que el proyecto con sus diferentes apuntadores y metadatos de ficheros, parametros, elementos de configuración… y tambien los pasos de MSBuild que indica como compilar el proyecto en cada una de las configuraciones.

    ...
    <RootNamespace>Aporta.Modules.V1_GestionIT</RootNamespace>
    <AssemblyName>Aporta.Modules.V1_GestionIT</AssemblyName>
    ...

Una vez cambiemos aqui el parametro <RootNamespace> podemos guardar y volver a cargar el proyecto. Ahora el Default namespace ya será el que queriamos.

Refactorización

Ahora solo queda asegurarnos que todo nuestro código está en el namespace que corresponde, esto lo podemos hacer de 2 maneras, o bien haciendo click derecho sobre un namespace de una clase, y refactorizando, o bien con las herramientas de buscar y reemplazar de VisualStudio. En cualquiera de los dos casos, hay que dejar el nuevo namespace.