MainMind

True & racing de norte a sur


Actualizar TFS 2015 Update 4 en sistemas no ingleses

En ocasiones actualizar las versiones de Team Foundation Server en instalaciones locales necesita de una preparación adicional, si no hubo planificación anterior o las condiciones de infraestructuras no son las idóneas. Entre ellas, existe la limitación de idiomas, en las que debemos de tener en cuenta si nuestros servidores de base de datos SQL Server no están en inglés, debemos tener instalado el paquete de idioma correspondiente, por ejemplo Inglés y Español en el sistema donde reside TFS.

Al intentar instalar nos aparecerá el mensaje siguiente:

En el registro de la instalación aparece:

[0C18:0CD8][2014-00-00T13:33:25]i000: MUX:  Stop Block: Dev14_LanguageInstall : La versión de Team Foundation Server instalada actualmente está en otro idioma. Solo puede haber un idioma de Team Foundation Server instalado.

No se trata solo de añadirlo al sistema operativo, deben estar instalados los paquetes de idiomas (Control Panel -> Clock, Language and Region -> Language, dentro de cada idioma desde Options pulsamos sobre Download and install language pack

 

 Una vez instalado el idioma (si no lo estaba) debe ser el principal del sistema operativo, reiniciar el equipo y ya será posible instalar la actualización. Deben coincidir Formato, Ubicación e Idioma

Debug Linq SQL

En ocasiones podemos encontrar sentencias complejas o sin errores aparentes, otra forma de intentar buscar soluciones es mostrar la sentencial SQL generada por Entity Framework. Tan solo debemos habilitar el log, mostrandolo en en panel Output de nuestro Visual Studio por ejemplo:

 

                using (ModeloEntities entidad = new ModeloEntities ())
                {

                    entidad.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
                    var resultado = (nuestraConsultaLINQ)

                }

 

Errores JavaScript en entornos de prueba locales: Browser Link

En ocasiones es posible obtener errores en entornos de desarrollo, pero una vez en producción no suceden; este puede ser uno de los motivos dependiendo del caso. A partir de la versión Visual Studio 2013 se introdujo una características nueva: Browser Link que permite interceptar las llamadas AJAX mediante SignalR estableciendo una canal intermedio entre Visual Studio y el navegador.

Para tal función se inserta automáticamente código JavaScript en la página generada que puede llegar a interferir, por ejemplo con Bootstrap o controles de terceros, generando el error en tiempo de ejecución del tipo:

La prueba rápida es deshabilitar esta característica desde el propio entorno VS:

En entornos de producción con la compilación fuera del modo debug no se realiza la carga de esta característica, solo sobre localhost.

<system.web>
  <compilation debug="false" targetFramework="4.5" />
</system.web>

 

Adaptar nombre de servicio WCF/SVC según cabecera URL de acceso

En ocasiones un servicio web puede ser accedido de diferentes direcciones, configuración de redes, balanceos de carga... es posible especificar en un servicio WCF para que adopte la dirección de cabecera de forma automática en pocas líneas para los metadatos:

    <behaviors>
      <serviceBehaviors>
        <behavior name="customBehaviour">
          <useRequestHeadersForMetadataAddress>
            <defaultPorts>
              <add scheme="https" port="443" />
            </defaultPorts>
          </useRequestHeadersForMetadataAddress>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

Para realizar manualmente la localización externa:

<serviceMetadata httpGetEnabled="true"  externalMetadataLocation="https://ws.misitio.com/servicio.svc?wsdl"/>

 

 

Actualizar modelo .edmx con los cambios de la base de datos

La realización de cambios en la base de datos debe reflejarse dentro del modelo generado en Visual Studio. Desde un cambio mínimo, por ejemplo un campo de una tabla determinada pasa a admitir valores nulos, a cualquier otro complejo de adición/modificación/eliminación de tablas, referencias, triggers, procedimientos, relaciones...

1.- Abrimos nuestro archivo edmx con el editor predeterminado de Visual Studio: ADO.NET Entity Data Model Designer y pulsamos con el botón derecho sobre una zona libre en la opción "Udate Model from Database"

2.- Una vez que tenemos nuestro modelo reflejado, actualizamos el fichero con extension "IntranetModel.TT" pulsando con el botón derecho sobre ellos y seleccionado "Run custom tool"

3.- Lanzamos "Run custom tool" sobre el fichero "IntranetModel.context.TT"

En el caso de haber cambiado el namespace o el nombre del proyecto, deberemos renombrarlos de nuevo en el archivo CS correspondiente del context de la clase. Tambien es posible realizar cambios parciales en partes concretar del modelado desde "Model browser".

NOTA: Si a pesar de ello, no se reflejan los cambios, podemos eliminar ambos ficheros y volver a añadir "Add code generation item" seleccionando la versiónn correspondient de "EF 6.x DbContext Generator"