Archivo de Marzo 2008

h1

Añadir Windows Explorer al menu de herramientas de Visual Studio

Marzo 18, 2008

Hay veces que necesitamos saber donde se encuentra almacenado  un fichero con el que estamos trabajando. Esto se puede hacer mirando las propiedades del fichero, se copia la ruta, abres el explorador de Windows  y pegas la ruta. No es un tarea matadora, pero si tienes que hacerla muchas veces puede resultar molesta.

Para simplificarlo, se puede hacer que desde Visual Studio se abra el explorador de Windows en la carpeta en la que se encuentra el fichero. Es muy sencillo:

Click en Tools, despues External Tools…, y click en Add.

Ahora solo hay que introducir lo siguiente:
Title: Windows Explorer
Command: explorer.exe
Arguments: /select,”$(ItemPath)”

Dejamos Initial directoy en blanco , y damos a OK.  Ahora cuando vayamos a Tools, Windows Explorer,  el explorador de Windows se abrira con el fichero que este actualmente abierto seleccionado.

PD: esto es una traducción adaptación de esto.

h1

System.IO.Path.Combine() en lugar de concatenar strings

Marzo 12, 2008

A la hora de obtener la ruta de ficheros normalmente se recurre a la concatenacion de strings. Por ejemplo:

public string ObtenerRuta()
{
string ruta = ConfigurationManager.AppSettings["Carpeta"];
string fichero = “ejemplo.txt”;
return ruta + fichero;
}

Pero esto puede dar lugar a errores, teniendonos que asegurar de que la ruta acabe con “\”. Para hacer esto de una manera mas elegante podemos usar Syste.IO.Path.Combine().

public string ObtenerRuta()
{
string ruta = ConfigurationManager.AppSettings["Carpeta"];
string fichero = “ejemplo.txt”;
return System.IO.Path.Combine(ruta, fichero);
}

Este metodo se encarga de devolver una ruta valida aunque no contenga el caracter “\” . Una cosa a tener en cuenta es que si el segundo string que se la pasa al metodo es una ruta absoluta, devolvera dicha ruta omitiendo el primer string.

public string ObtenerRuta()
{
string ruta = ConfigurationManager.AppSettings["Carpeta"];
string fichero = “c:”;
return System.IO.Path.Combine(ruta, fichero);
}

Este codigo devolvera “c:”

h1

FireBug, complemento para Firefox

Marzo 11, 2008

Tengo que reconocer que no me gusta nada trabajar con javascript por dos razones: depurar los errores y que hasta VS2008 no habia intellisense.

Para depurarlo con Visual Studio e Internet Explorer simplemente hay que ir Herramientas->Opciones de Internet y en la ficha de Opciones Avanzadas desmarcar la casilla que pone Deshabilitar la depuración de la secuencia de comandos. Pero claro si lo desmarcas cada pagina que tenga errores de javascript mostrara el mensaje de error, convirtiendo la navegacion en un infierno. Es increible la cantidad de paginas con errores de javascript que hay, parece que a la gente no le importa demasiado.

Pero con Firefox hay una opción más elegante: FireBug. Se trata de una add in para Firefox que nos permite ver los errores de javascript, poner puntos de interrupción, ver el css de la página, modificarlo, etc.

Todo esto desde el navegador:

firebug.jpg

Podeis descargarlo desde http://www.getfirebug.com/

h1

Programa para imprimir las tablas de una base de datos SQL Server

Marzo 10, 2008

Hoy navegando me he encontrado este programita que genera una pagina aspx con todas las tablas, nombres de columnas, el tipo de datos de la columnas y mas información. Es bastante simple y sirve para tener una referencia mas completa de la base de datos.

http://code.msdn.microsoft.com/dbprint

h1

Intellisense en VS2008

Marzo 8, 2008

El intellisense es una caracteristica muy util al programar, pero hay ocasiones en las que tapa una parte del codigo que te interesaria consultar:

intellisense1.jpg

Pues bien si esto sucede solo tendremos que presionar la tecla ctrl y el menu de intellisense se volvera transparente:

intellisense2.jpg

h1

Configurar el tipo de coleccion en un cliente WCF

Marzo 7, 2008

Esto que os voy a comentar solo se aplica a Visual Studio 2008, o al menos no he descubierto como hacerlo en VS2005.

Supongamos que tenemos un servicio wcf, que devuelve una lista de strings:

[OperationContract]

List<string> GetDocuments(long entityId);

Como vemos el metodo GetDocuments devuelve un List de strings.  Al añadir la service refence en el cliente,  observamos la clase .cs que se ha generado. Vemos que se generan todas las propiedades de los objetos, los metodos,etc. Si miramos el metodo que nos interesa veremos lo siguiente

[OperationContract]

string[] GetDocuments(long entityId);

Como vemos en el cliente se indica que el metodo devuelve un array de strings, en vez de un List. Por que pasa esto?  Pues por interoperabilidad, WCF se ha hecho pensando en que el cliente no tiene por que ser una aplicacion .Net. De este modo devolver un List no es lo mas interoperable, sin embargo la mayoria de los lenguajes implementan arrays.En VS2005 esto no se puede modificar , sin embargo en VS2008 si que han pensado en que en una aplicacion .Net si que tiene sentido que el servicio devuelva List u otro tipo de datos que no sea un array.  Configurarlo es muy sencillo, al añadir la service reference nos aparece esta pantalla:

servicereferenceadd.jpg

Simplemente damos al boton “Advanced” y se nos muestra la siguiente pantalla:

servicereferenceadd2.jpg

Ya en collection Type podemos elegir la coleccion que mas nos guste :)

servicereferenceadd3.jpg

Y ya estaria, si elegimos System.Collections.Generic.List ya podremos trabajar normalmente en el cliente si tener que andar transformando a Array.

h1

Comenzamos

Marzo 7, 2008

Empiezo este blog sobre todo por una cuestión personal. Al cabo del dia leo tantas cosas sobre .Net que muchas veces se me olvida donde las he leido. Tambien muchas veces resuelves cierto problemas que no son frecuentes , pero sin embargo cuando te vuelven surgir no te acuerdas exactamente de como lo resolvistes. Por eso empiezo con el blog, en el quiero llevar un registro de todas esas cosas y si ademas pueden ser de utilidad a mas gente mejor que mejor. Muchos articulos seran copy paste de otros, comentandolos y ampliandolos en lo posible.

 Empecemos con la aventura.