Archivo de la categoría: Herramientas de desarrollo

Temas relacionados con herramientas de desarrollo de software y su utilización.

Qué es Visual Studio LightSwitch

Con esta tecnología Microsoft pretende llevar el campo de desarrollo a manos que no se dedican especialmente a la programación.

Su utilización se asemeja a lo que pueda ser access comparado a cualquier gestor de base de datos.

En visual studio 2013 puedes elegir entre crear una aplicación LightSwitch de escritorio o una de tipo web.

Si bien todas estas soluciones rápidas de desarrollo son muy poco personalizables puede llegar en alguna ocasión a ser interesante para desarrollar una aplicación de una manera rápida y sencilla.

Más Info

Como añadir una nueva entrada a un fichero po y mo

Si utilizas la aplicación Poedit para editar tus traducciones de WordPress te habrás fijado que no existe ningún botón ni ninguna opción para añadir una nueva fila o traducción al fichero.

Para poder añadir una nueva entrada a un fichero po y mo tan solo debes olvidarte al principio de Poedit y editarlo con un procesador de textos cualquiera (por ejemplo notepad++) y copiar una fila como la siguiente.

#: ../header.php:391 ../header.php:442
msgid «Just type and press ‘enter'»
msgstr «Teclea y pulsa intro»

La primera fila es un comentario que indica en que sitios se está utilizando la traducción.

La segunda fila (la que empieza por msgid) significa que el id del mensaje es lo que va entre comillas. Lo ideal es que para todos tus ficheros de idiomas existan los mismos ids. Es común sobretodo cuando descargas plantillas que se hayan olvidado en los ficheros de traducción algunas claves con lo que la traducción no se realizará. En este caso obtendrá el valor por defecto que contiene el fichero de idioma por defecto.

La tercera fila (comienza por msgstr) es el sitio donde se realiza la traducción en el idioma que pertenezca el fichero a editar.

Una vez hemos introducido estas 3 filas con su correspondiente traducción al idioma y guardado el archivo po podremos abrir este mismo archivo con Poedit. Ahora podremos ver que con esta app se visualiza la nueva entrada que anteriormente no estaba.

El último paso es guardar con Poedit y se generará o actualizará el fichero mo.

Estos dos últimos ficheros (po y mo) son los que utilizaremos para su correcta traducción.

Bases de datos para desplegar con una aplicación .Net

Cómo realizar una instalación de una aplicación nativa en cliente que utilice una base de datos pero sin tener que realizar la instalación completa de sqlserver u oracle por ejemplo que dificultan el despliegue de todo el sistema.

Para solucionar este problema, de momento, he encontrado estas soluciones.

  • Desplegar una base de datos de tipo SQL Server CE (Compact Edition) junto a la aplicación. Cómo desplegar una Base de datos SQL Server Compact con una aplicación.
  • Utilizar SQLite. Es una base de datos que se integra en ficheros casi planos y que es fácil de desplegar con una solución en Visual Studio. Existe una librería en .Net (System.Data.SQLite.dll) que permite acceder. También debe funcionar con Entity Framework pero esto todavía no lo he podido comprobar.
  • Siempre puedes usar un fichero Access para este tipo de despliegues.

 

Copiar un proyecto de un repositorio remoto con Visual Studio 2013 y Git

Si necesitas empezar a trabajar en un proyecto de equipo que haya comenzado entonces necesitarás copiarte el proyecto en un repositorio local.

Para ello lo primero que debes hacer es añadir, si no lo tienes ya, un repositorio local donde vincularás los ficheros del proyecto. Para crear un repositorio debes ir a la ventana del Team Explorer dentro de Visual Studio 2013 y pulsar el botón con forma de enchufe «Conectar con proyectos de equipo» (vale simplemente con abrir el Visual Studio, no es necesario utilizar ningún proyecto creado).

Git Visual Studio Repositorio Remoto

Una vez creado el repositorio, debes seleccionarlo y después pulsar la opción de clonar:

Git Visual Studio Repositorio Remoto 2

En este punto Visual Studio te pemitirá introducir la url donde está ubicado el repositorio remoto (en este punto puedes meter un repositorio creado con BitBucket o GitHub). Además podrás seleccionar el repositorio local aunque aparecerá por defecto el repositorio seleccionado anteriormente que hemos creado en el punto anterior.

Cuando tengas todo preparado pulsarás el botón «Clonar» y obtendrás los ficheros del repositorio remoto a local.

Git Visual Studio Repositorio Remoto 3

Una vez haya terminado de recibir todos los ficheros entonces podremos ir a la ruta local de nuestro repositorio y abrir el proyecto que tendremos añadido directamente al control del código fuente. Ya podremos trabajar con él.

Error en owin al renombrar proyectos

Si renombramos un proyecto o varios de ellos en una aplicación web y estamos utilizando Owin es posible que aparezca el siguiente error:

The following errors occurred while attempting to load the app.
– The OwinStartup attribute discovered in assembly ‘x’ referencing startup type ‘x.Startup’ conflicts with the attribute in assembly ‘y’ referencing startup type ‘y.Startup’ because they have the same FriendlyName ». Remove or rename one of the attributes, or reference the desired type directly.
To disable OWIN startup discovery, add the appSetting owin:AutomaticAppStartup with a value of «false» in your web.config.
To specify the OWIN startup Assembly, Class, or Method, add the appSetting owin:AppStartup with the fully qualified startup class or configuration method name in your web.config.

Este error se suele producir porque existen dos ensamblados cargados en nuestra carpeta bin de la solución que contiene una clase startup. En la ejecución de la aplicación asp.net no sabe resolver cual de las dos clases debe ejecutar y de ahí el error.

La solución es ir a la carpeta bin y borrar la dll antigua que ya no es necesaria.

Como crear un Theme en ASP NET

Para crear un Tema o Theme en Visual Studio debemos hacer click derecho sobre el proyecto web y añadir la carpeta de ASP.NET App_Themes . Nos pedirá un nombre, le daremos el nombre MainTheme por ejemplo.

Una vez creado este directorio especial podemos añadirle dentro de sí un nuevo item de extensión .Skin.

Lo último que nos queda es especificar en el web.config la theme que usará el sitio por defecto.


<configuration>
 <system.web>
<pages theme="MainTheme">

</pages>

</system.web>

</configuration>

Ya estará funcionando nuestro tema, solo quedaría definir en nuestro skin las propiedades de cada control.

Modelo y Base de Datos con Identity en ASP NET

Con la versión 4.5 de .NET Framework se ha incorporado la autenticación basada en Identity. Esto ya lo hablamos en pasadas entradas, ahora vamos a verlo un poquito más a fondo.

Con Identity se crean las siguientes tablas:

  • AspNetRoles
  • AspNetUserClaims
  • AspNetUserLogins
  • AspNetUserRoles
  • AspNetUsers

En estas tablas se guarda toda la información relacionada con los usuarios. Es en la tabla AspNetUsersr donde  se guardan los siguientes campos:

  • Id
  • UserName
  • PasswordHash
  • SecurityStamp
  • Discriminator

En la siguiente imagen se muestra la estructura de tablas y los campos de la tabla AspNetUsers:

Tablas con Identity en ASP.NET 4.5

Ya entrando en el código, si has generado el proyecto web con una de las plantillas que ofrece Visual Studio 2013 verás que en la carpeta «Models» se ha creado un archivo llamado «IdentityModels.cs». En este fichero existen varias clases que definen la funcionalidad de Identity en la aplicación. Las clases son:

  • ApplicationUser. Es la entidad Usuario de aplicación. Hereda de «IdentityUser» e inicialmente está vacía aunque podemos meterle las propiedades que deseemos para personalizar nuestro modelo de usuario (http://go.microsoft.com/fwlink/?LinkID=317594). Si nos fijamos en la clase de la que hereda contiene las siguientes propiedades que se mapean a la base de datos: Id, PasswordHash, SecurityStamp, UserName así como las colecciones que relacionan con las demás tablas.

Clase IdentityUser

  • ApplicationDbContext. Es la clase que maneja el contexto Entity Framework con la base de datos. De hecho en su constructor coge el connectionstring del web.config para su conexión con la base de datos en este caso «DefaultConnection».

Clase ApplicationDbContext

  • UserManager. Es una clase que gestiona operaciones típicas de usuarios con la base de datos. Hereda de «UserStore» y tiene diversos métodos de creación y borrado de usuarios, adicción y eliminación de roles por usuario, búsqueda por nombre o id y muchos más. También tiene gran parte de estos métodos en su modalidad asíncrona. Sin embargo desde aquí no es posible obtener todos los usuarios.
  • IdentityHelper. Esta clase estática situada fuera del espacio de nombres «Models»se encarga de sincronizar la base de datos en los registros de usuarios con el comportamiento de la aplicación en lo que se refiere a la autenticación. Cada vez que un registro de un usuario se efectúa correctamente pasará por IdentityHelper para insertarlo en la base de datos y posteriormente autenticarlo en la aplicación.

Después de analizar todo este rollo vamos a ver como podríamos obtener todos los usuarios con Identity. Si utilizamos directamente el contexto «ApplicationDbContext» accederemos a todos los usuarios mediante su propiedad «Users»:


IList<ApplicationUser> users = context.Users.ToList();