<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang=""><title type="html">El blog de Vicente García</title><subtitle type="html">The dark side of the server-side</subtitle><id>http://geeks.ms/blogs/vgarcia/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/vgarcia/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/vgarcia/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2008-07-05T16:54:00Z</updated><entry><title>Windows Azure SDK 1.7 y Microsoft.WindowsAzure.Diagnostics</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2012/07/10/windows-azure-sdk-1-7-y-microsoft-windowsazure-diagnostics.aspx" /><id>/blogs/vgarcia/archive/2012/07/10/windows-azure-sdk-1-7-y-microsoft-windowsazure-diagnostics.aspx</id><published>2012-07-10T13:46:00Z</published><updated>2012-07-10T13:46:00Z</updated><content type="html">Si habéis migrado una aplicación de Windows Azure SDK 1.* al nuevo Windows Azure SDK 1.7 y hacéis uso del tracing en el Windows Azure Table Storage habréis observado un comportamiento errático, incluso habréis obtenido este mensaje a la hora de hacer tracing: Could not load file or assembly &amp;#39;Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;#39; or one of its dependencies. The located assembly&amp;#39;s manifest definition does not match the assembly...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2012/07/10/windows-azure-sdk-1-7-y-microsoft-windowsazure-diagnostics.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=206035" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Talentous</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2012/02/17/talentous.aspx" /><id>/blogs/vgarcia/archive/2012/02/17/talentous.aspx</id><published>2012-02-17T09:17:00Z</published><updated>2012-02-17T09:17:00Z</updated><content type="html">Me gustar&amp;iacute;a compartir con vosotros la aventura profesional en la que me encuentro inmerso en el mundo de las startups. Hemos creado Talentous la red profesional del talento. En Talentous podr&amp;aacute;s dibujar tu perfil de talento a trav&amp;eacute;s de tests psicom&amp;eacute;tricos dise&amp;ntilde;ados por la Facultad de Psicolog&amp;iacute;a de la Universidad Complutense de Madrid. Adem&amp;aacute;s, podr&amp;aacute;s valorar de manera an&amp;oacute;nima a todo profesional con el que hayas tenido una relaci&amp;oacute;n...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2012/02/17/talentous.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203432" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="talento" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/talento/default.aspx" /><category term="empleo" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/empleo/default.aspx" /><category term="talentous" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/talentous/default.aspx" /></entry><entry><title>ASP.NET MVC, SEO y diferentes idiomas</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2011/09/29/asp-net-mvc-seo-y-diferentes-idiomas.aspx" /><id>/blogs/vgarcia/archive/2011/09/29/asp-net-mvc-seo-y-diferentes-idiomas.aspx</id><published>2011-09-29T07:45:00Z</published><updated>2011-09-29T07:45:00Z</updated><content type="html">Un valor muy importante de nuestras webs p&amp;uacute;blicas es su posicionamiento en los motores de b&amp;uacute;squeda. Si a ello le a&amp;ntilde;adimos que debemos de soportar m&amp;uacute;ltiples idiomas y que queremos aparecer bien posicionados en las b&amp;uacute;squedas en diferentes lenguajes de los buscadores, el tema se puede poner bastante divertido. Hay que tener en cuenta que los buscadores van a realizar su indexaci&amp;oacute;n sin especificar una culture en su petici&amp;oacute;n, por lo que las t&amp;eacute;cnicas...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2011/09/29/asp-net-mvc-seo-y-diferentes-idiomas.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200834" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="asp.net mvc" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/asp.net+mvc/default.aspx" /><category term="seo" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/seo/default.aspx" /></entry><entry><title>Seguridad en .NET 4</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2011/09/28/seguridad-en-net-4.aspx" /><id>/blogs/vgarcia/archive/2011/09/28/seguridad-en-net-4.aspx</id><published>2011-09-28T16:08:00Z</published><updated>2011-09-28T16:08:00Z</updated><content type="html">Uno de los aspectos del framework que ha cambiado de manera m&amp;aacute;s radical es su modelo de seguridad. En la versi&amp;oacute;n .NET 4 se ha dejado obsoleto al CAS policy. CAS policy es una tecnolog&amp;iacute;a potente que permit&amp;iacute;a la aplicaci&amp;oacute;n de permisos de una manera muy detallada, pero demasiado engorrosa, ya que ni siquiera se pueden aplicar pol&amp;iacute;ticas para varias versiones del framework, etc. Con la salida de .NET 4, Microsoft decidi&amp;oacute; cambiar la manera de hacer las cosas...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2011/09/28/seguridad-en-net-4.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200798" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="seguridad" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/seguridad/default.aspx" /><category term="cas" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/cas/default.aspx" /></entry><entry><title>Windows Azure SDK 1.5</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2011/09/14/windows-azure-sdk-1-5.aspx" /><id>/blogs/vgarcia/archive/2011/09/14/windows-azure-sdk-1-5.aspx</id><published>2011-09-14T17:10:00Z</published><updated>2011-09-14T17:10:00Z</updated><content type="html">Nueva versi&amp;oacute;n del SDK para Windows Azure, todos los detalles aqu&amp;iacute; . Integraci&amp;oacute;n de aplicaciones Windows Metro Style en Windows 8, novedades en Windows Azure Marketplace, geo replicaci&amp;oacute;n del Windows Azure Storage, nuevas validaciones en la generaci&amp;oacute;n de paquetes de despliegue and much more!!!...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2011/09/14/windows-azure-sdk-1-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200507" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Windows+Azure/default.aspx" /><category term="Windows 8" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Windows+8/default.aspx" /></entry><entry><title>Windows Azure AppFabric SDK V1.5</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2011/09/14/windows-azure-appfabric-sdk-v1-5.aspx" /><id>/blogs/vgarcia/archive/2011/09/14/windows-azure-appfabric-sdk-v1-5.aspx</id><published>2011-09-14T14:19:00Z</published><updated>2011-09-14T14:19:00Z</updated><content type="html">En estos días que corren, no todo va a ser Windows 8 . Se ha publicado la versión 1.5 del SDK de Windows Azure AppFabric que trae novedades principalmente en la parte de Service Bus, incluyendo mensajería brokered como topics, colas y subscripciones. Junto a la descarga del SDK, tenéis ejemplos de las nuevas funcionalidades en Visual C# y Visual Basic.NET Próximamente se incluirán más detalles sobre este nuevo sdk en su sección correspondiente de la MSDN . Un saludo. EDITO: Hoy también se anuncia...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2011/09/14/windows-azure-appfabric-sdk-v1-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=200502" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Windows+Azure/default.aspx" /><category term="Windows Azure AppFabric" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Windows+Azure+AppFabric/default.aspx" /></entry><entry><title>Raona</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2011/01/10/raona.aspx" /><id>/blogs/vgarcia/archive/2011/01/10/raona.aspx</id><published>2011-01-10T08:43:00Z</published><updated>2011-01-10T08:43:00Z</updated><content type="html">Ha llegado la hora del cambio y ahora trabajo en Raona. Despu&amp;eacute;s de casi tres a&amp;ntilde;os en Plain Concepts puedo decir que no conservo a ning&amp;uacute;n compa&amp;ntilde;ero, lo que conservo son amigos :) En Septiembre del 2010 he comenzado una nueva andadura, con interesantes retos para este 2011 como consultor para Raona . Andadura que ha comenzado con muy buen pie :) Un saludo :)...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2011/01/10/raona.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=187027" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="raona" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/raona/default.aspx" /></entry><entry><title>Streaming de libros Parte 2 – Indexación con Full Text Search</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-2-indexaci-243-n-con-full-text-search.aspx" /><id>/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-2-indexaci-243-n-con-full-text-search.aspx</id><published>2010-05-04T18:46:00Z</published><updated>2010-05-04T18:46:00Z</updated><content type="html">Full Text Search nos da la capacidad de indexar campos basados en caracteres (aunque su almacenamiento sea en binario) y hacer b&amp;uacute;squedas complejas sobre esos textos. Esta capacidad viene dada por los siguientes elementos: SQL Full-text Filter Daemon Launcher: Se encarga de mantener actualizados los &amp;iacute;ndices Full Text Search de cada tabla, asociado a cada instancia de Sql Server, pero corriendo en un proceso separado. Si no lo necesitamos, podremos poner su estado a Stop. Full-text index...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-2-indexaci-243-n-con-full-text-search.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=176211" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="SQL Server" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/SQL+Server/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="sql server 2008 r2" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/sql+server+2008+r2/default.aspx" /><category term="filestream" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/filestream/default.aspx" /><category term="full text" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/full+text/default.aspx" /></entry><entry><title>Streaming de libros Parte 1 – Almacenamiento en FileStream</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-1-almacenamiento-en-filestream.aspx" /><id>/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-1-almacenamiento-en-filestream.aspx</id><published>2010-05-04T17:04:00Z</published><updated>2010-05-04T17:04:00Z</updated><content type="html">Voy a intentar ilustrar a lo largo de una serie de post la gesti&amp;oacute;n de un almac&amp;eacute;n de libros. Para ello, vamos a utilizar la tecnolog&amp;iacute;a File Stream para su almacenamiento en nuestra base de datos Sql Server 2008 R2 Express, la tecnolog&amp;iacute;a Full-Text Search para su posterior indexaci&amp;oacute;n y consulta de contenidos y WCF + MTOM para hacer posible el streaming (tanto upload como downdload) de nuestros libros. File Stream es una manera de guardar informaci&amp;oacute;n no estructurada...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/05/04/streaming-de-libros-parte-1-almacenamiento-en-filestream.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=176201" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="SQL Server" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/SQL+Server/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="sql server 2008 r2" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/sql+server+2008+r2/default.aspx" /><category term="filestream" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/filestream/default.aspx" /></entry><entry><title>Psscor2 : Extensión de debug de .Net en WinDbg</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/04/05/psscor2-extensi-243-n-de-debug-de-net-en-windbg.aspx" /><id>/blogs/vgarcia/archive/2010/04/05/psscor2-extensi-243-n-de-debug-de-net-en-windbg.aspx</id><published>2010-04-05T14:09:13Z</published><updated>2010-04-05T14:09:13Z</updated><content type="html">Las personas que estén acostumbradas a utilizar el debugger WinDbg para depurar sus aplicaciónes .Net conocerán de sobra la extensión SOS . Pues bien, quería hablaros de la liberación de la nueva versión de Psscor2 , con más funcionalidades añadidas que la extensión SOS, sobre todo para aplicaciónes ASP.Net. Para más información, dos blogs esenciales: ASP.NET Debugging If broken it is, fix it you should Espero que las disfrutéis....(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/04/05/psscor2-extensi-243-n-de-debug-de-net-en-windbg.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=173856" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="debug" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/debug/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="sos" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/sos/default.aspx" /><category term="windbg" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/windbg/default.aspx" /><category term="psscor2" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/psscor2/default.aspx" /></entry><entry><title>Novedades Entity Framework 4.0 : Generación de la base de datos</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/02/23/novedades-entity-framework-4-0-generaci-243-n-de-la-base-de-datos.aspx" /><id>/blogs/vgarcia/archive/2010/02/23/novedades-entity-framework-4-0-generaci-243-n-de-la-base-de-datos.aspx</id><published>2010-02-22T23:47:00Z</published><updated>2010-02-22T23:47:00Z</updated><content type="html">En la nueva versi&amp;oacute;n de Entity Framework 4.0 adelantada con el .Net Framework 4.0 RC se han implementado m&amp;eacute;todos que nuestro contexto hereda de ObjectContext para manejar la base de datos con la que se mapear&amp;aacute; nuestro modelo. Podemos partir de un modelo vacio en el wizard de la creaci&amp;oacute;n del modelo, eligiendo &amp;ldquo;Empty model&amp;rdquo;: Y crear un modelo a&amp;ntilde;adiendo, por ejemplo, dos entidades: Y una relaci&amp;oacute;n entre ellas: Ahora, podr&amp;iacute;amos generar con un...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/02/23/novedades-entity-framework-4-0-generaci-243-n-de-la-base-de-datos.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167947" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="plainconcepts" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/plainconcepts/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="entity framework 4" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/entity+framework+4/default.aspx" /></entry><entry><title>Entity Framework : Documentación de código generado</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/02/22/entity-framework-documentaci-243-n-de-c-243-digo-generado.aspx" /><id>/blogs/vgarcia/archive/2010/02/22/entity-framework-documentaci-243-n-de-c-243-digo-generado.aspx</id><published>2010-02-22T19:00:00Z</published><updated>2010-02-22T19:00:00Z</updated><content type="html">Documentar nuestro c&amp;oacute;digo es una buena pr&amp;aacute;ctica reconocida que ayuda a la legibilidad y mantenimiento en nuestros desarrollos. De todos es conocido la tag Summary para documentar las cabeceras de nuestras clases, m&amp;eacute;todos, etc. Bien, si modelamos una clase con en Entity Framework, el c&amp;oacute;digo generado posee una tag con un comentario como el siguiente: Pero esto tiene f&amp;aacute;cil arreglo, si nos vamos al dise&amp;ntilde;ador de nuestro modelo, en la pesta&amp;ntilde;a de Propiedades...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/02/22/entity-framework-documentaci-243-n-de-c-243-digo-generado.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167930" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="plainconcepts" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/plainconcepts/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="entity framework 4" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/entity+framework+4/default.aspx" /></entry><entry><title>Propuestas de Plain Concepts para el Mix 2010 !</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2010/01/11/propuestas-de-plain-concepts-para-el-mix-2010.aspx" /><id>/blogs/vgarcia/archive/2010/01/11/propuestas-de-plain-concepts-para-el-mix-2010.aspx</id><published>2010-01-11T09:45:00Z</published><updated>2010-01-11T09:45:00Z</updated><content type="html">Desde Plain Concepts hemos hecho las siguientes propuestas de charlas para el Mix 2010 : BECOMING SOCIAL. How to power up your website using social networks PLAIN CONCEPTS&amp;rsquo; SILVERLIGHT LIVE MESSENGER TOOLKIT SILVERLIGHT IN THE AUDIOVISUAL WORLD EXTENDING THE WINDOWS LIVE MESSENGER WEB TOOLKIT WITH SCRIPT# AND SILVERLIGHT WHAT YOU SEE IS NOT WHAT IS THERE. Users mind as a resource in Expression Blend Solo pediros que, si os parece interesantes y son de vuestro agrado, vot&amp;eacute;is por ellas...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2010/01/11/propuestas-de-plain-concepts-para-el-mix-2010.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=164738" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="plain concepts" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/plain+concepts/default.aspx" /><category term="silverligth" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/silverligth/default.aspx" /><category term="messenger" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/messenger/default.aspx" /><category term="live" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/live/default.aspx" /><category term="mix 2010" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/mix+2010/default.aspx" /></entry><entry><title>Bug descubierto en ADO.NET Data Services (a.k.a. WCF Data Services)</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/12/22/bug-descubierto-en-ado-net-data-services-a-k-a-wcf-data-services.aspx" /><id>/blogs/vgarcia/archive/2009/12/22/bug-descubierto-en-ado-net-data-services-a-k-a-wcf-data-services.aspx</id><published>2009-12-22T09:21:12Z</published><updated>2009-12-22T09:21:12Z</updated><content type="html">En el proyecto en el que actualmente trabajo estamos utilizando ADO.NET Data Services desde su primera versión y, debido al exhaustivo uso que estoy haciendo de esta tecnología, descubrí algun comportamiento errático que pasé a reportar al Equipo de producto, concretamente a Peter Qian , en una solución de Visual Studio que reproducía el comportamiento. Y, en efecto, una de las consultas a un Service Operation que devuelve tipos primitivos o colección de tipos primitivos provocaba una excepción cuando...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2009/12/22/bug-descubierto-en-ado-net-data-services-a-k-a-wcf-data-services.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=163275" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="entity framework" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/entity+framework/default.aspx" /><category term="ado.net data services" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/ado.net+data+services/default.aspx" /><category term="bug" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/bug/default.aspx" /><category term="wcf data services" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/wcf+data+services/default.aspx" /></entry><entry><title>ADO.NET Data Services : Paginación</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/11/12/ado-net-data-services-paginaci-243-n.aspx" /><id>/blogs/vgarcia/archive/2009/11/12/ado-net-data-services-paginaci-243-n.aspx</id><published>2009-11-11T23:51:00Z</published><updated>2009-11-11T23:51:00Z</updated><content type="html">En este post voy a hacer un ejemplo de c&amp;oacute;mo paginar resultados de una consulta realizada a trav&amp;eacute;s de ADO.NET Data Services y aprovechando la funcionalidad que se provee a partir de la versi&amp;oacute;n v1.5CTP1. La paginaci&amp;oacute;n en la consumici&amp;oacute;n de servicios es una buena pr&amp;aacute;ctica, ya que traemos en segmentos los datos que vamos a traernos y, as&amp;iacute;, tanto cliente como servidor, pueden ir procesando al mismo tiempo tanto lo que va a servir como lo que se va a consumir...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2009/11/12/ado-net-data-services-paginaci-243-n.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=160360" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="entity framework" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/entity+framework/default.aspx" /><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term="ado.net data services" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/ado.net+data+services/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="paginacion" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/paginacion/default.aspx" /></entry><entry><title>[Tip] Tarea de MSBuild + Template de aplicación WPF = Dolor de cabeza</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/10/05/tip-tarea-de-msbuild-template-de-aplicaci-243-n-wpf-dolor-de-cabeza.aspx" /><id>/blogs/vgarcia/archive/2009/10/05/tip-tarea-de-msbuild-template-de-aplicaci-243-n-wpf-dolor-de-cabeza.aspx</id><published>2009-10-05T08:11:00Z</published><updated>2009-10-05T08:11:00Z</updated><content type="html">Este post es resultado de un comportamiento extra&amp;ntilde;o que presentaba la aplicaci&amp;oacute;n en la que ahora trabajamos. En Plain Concepts utilizamos la metodolog&amp;iacute;a SCRUM , por lo que nuestros proyectos siempre cuentan con integraci&amp;oacute;n continuas a trav&amp;eacute;s de la generaci&amp;oacute;n de builds con MSBuild . Bien, nuestra build generaba un instalador ClickOnce en un servidor Microsoft IIS, solo hab&amp;iacute;a que acceder a la direcci&amp;oacute;n del instalador y la aplicaci&amp;oacute;n se...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2009/10/05/tip-tarea-de-msbuild-template-de-aplicaci-243-n-wpf-dolor-de-cabeza.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=157391" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="debug" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/debug/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /><category term="msbuild" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/msbuild/default.aspx" /><category term="wpf" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/wpf/default.aspx" /><category term="scrum" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/scrum/default.aspx" /></entry><entry><title>Accediendo a Active Directory con System.DirectoryServices.AccountManagement</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/09/28/accediendo-a-active-directory-con-system-directoryservices-accountmanagement.aspx" /><id>/blogs/vgarcia/archive/2009/09/28/accediendo-a-active-directory-con-system-directoryservices-accountmanagement.aspx</id><published>2009-09-28T07:36:00Z</published><updated>2009-09-28T07:36:00Z</updated><content type="html">En el Microsoft Framework .NET 3.5 se ha incluido el namespace System.DirectoryServices.AccountManagement que nos permite acceder de una manera m&amp;aacute;s transparente a grupos y usuarios de un Active Directory que con las clases DirectoryEntry y DirectorySearcher . Para ello contamos con las clases UserPrincipal y GroupPrincipal , que hereda de la clase abstracta Principal y nos permitir&amp;aacute;n crear nuestras plantillas de b&amp;uacute;squeda. Despu&amp;eacute;s ejecutaremos nuestras peticiones contra...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2009/09/28/accediendo-a-active-directory-con-system-directoryservices-accountmanagement.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=156878" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="accountmanagement" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/accountmanagement/default.aspx" /><category term="active directory" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/active+directory/default.aspx" /><category term="directoryservices" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/directoryservices/default.aspx" /><category term=".net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/.net/default.aspx" /></entry><entry><title>Manejador global de excepciones en ADO.NET Data Services</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/09/21/manejador-global-de-excepciones-en-ado-net-data-services.aspx" /><id>/blogs/vgarcia/archive/2009/09/21/manejador-global-de-excepciones-en-ado-net-data-services.aspx</id><published>2009-09-21T09:05:12Z</published><updated>2009-09-21T09:05:12Z</updated><content type="html">Si tenemos la necesidad de incorporar a nuestro servicio WCF un manejador global de excepciones para capturar y tratar las excepciones que no manejamos en nuestros bloques try-catch, podemos seguir los siguientes pasos que se indican en este post . Pero si nuestra necesidad es el incluir un manejador global de excepciones en un servicio WCF ADO.NET Data Services, no nos servirá esta solución, ya que solo se capturarán las excepciones que se generen en el método de inicialización del servicio InitializeService...(&lt;a href="http://geeks.ms/blogs/vgarcia/archive/2009/09/21/manejador-global-de-excepciones-en-ado-net-data-services.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=156195" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author></entry><entry><title>[How-to] Información de excepciones en ADO.NET Data Services</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2009/09/17/how-to-informaci-243-n-de-excepciones-en-ado-net-data-services.aspx" /><id>/blogs/vgarcia/archive/2009/09/17/how-to-informaci-243-n-de-excepciones-en-ado-net-data-services.aspx</id><published>2009-09-17T19:50:00Z</published><updated>2009-09-17T19:50:00Z</updated><content type="html">&lt;p&gt;Por defecto, al crear un servicio ADO.NET Data Sevices, no tenemos informaci&amp;oacute;n de errores y, si se lanza alguna excepci&amp;oacute;n o hemos cometido alg&amp;uacute;n fallo, obtendremos un mensaje con tan poca informaci&amp;oacute;n como este:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/First_5F00_36559874.jpg"&gt;&lt;img height="291" width="522" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/First_5F00_thumb_5F00_36FD8CF7.jpg" alt="First" border="0" title="First" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Por lo que no tenemos ni idea de lo que est&amp;aacute; pasando con nuestro servicio. Realmente, nuestro error ha sido el siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/Second_5F00_7697C3BC.jpg"&gt;&lt;img height="153" width="678" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/Second_5F00_thumb_5F00_024D0AEF.jpg" alt="Second" border="0" title="Second" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;No hemos introducido el nombre del EntitySet al que queremos asignarle la regla de acceso correspondiente y no hemos introducido el nombre de la operaci&amp;oacute;n de servicio a la que queremos asignarle los derechos correspondiente.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bien, podemos obtener toda la informaci&amp;oacute;n de las anomal&amp;iacute;as que se est&amp;aacute;n produciendo a&amp;ntilde;adiendo a nuestro servicio dos l&amp;iacute;neas de c&amp;oacute;digo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/Third_5F00_26FE2266.jpg"&gt;&lt;img height="182" width="692" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vgarcia/Third_5F00_thumb_5F00_0B792063.jpg" alt="Third" border="0" title="Third" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;El atributo &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.aspx"&gt;ServiceBehavior&lt;/a&gt; lleva en el Framework .NET desde la versi&amp;oacute;n 3.0 en la que se incluy&amp;oacute; WCF y nos provee de la capacidad de especificar el comportamiento de la implementaci&amp;oacute;n del contrato. Con la propiedad booleana &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.includeexceptiondetailinfaults.aspx"&gt;IncludeExceptionDetailInFaults&lt;/a&gt; podemos decidir si las excepciones no manejadas del servicio son devueltas como errores SOAP.&lt;/p&gt;
&lt;p&gt;Este atributo puede decorar cualquier servicio WCF en general, aunque tambi&amp;eacute;n podemos indicarlo en nuestro fichero de configuraci&amp;oacute;n de la siguiente manera:&lt;/p&gt;
&lt;p&gt;&amp;lt;system.serviceModel&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;services&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service name=&amp;quot;PlainConcepts.Server.PlainService&amp;quot; behaviorConfiguration=&amp;quot;Debug&amp;quot; /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/services&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behaviors&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceBehaviors&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;behavior name=&amp;quot;Debug&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;true&amp;quot;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behavior&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/serviceBehaviors&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/behaviors&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;serviceHostingEnvironment aspNetCompatibilityEnabled=&amp;quot;true&amp;quot;/&amp;gt; &lt;br /&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La otra l&amp;iacute;nea que hemos incluido tiene que ver con el objeto de la clase DataServiceConfiguration (en versiones anteriores, de la interfaz &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.data.services.idataserviceconfiguration.aspx"&gt;IDataServiceConfiguration&lt;/a&gt;), que provee de la propiedad booleana &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.data.services.idataserviceconfiguration.useverboseerrors.aspx"&gt;UseVerboseErrors&lt;/a&gt;, a trav&amp;eacute;s de la cual podemos indicar a nuestro servicio que el comportamiento por defecto para todos los errores de sus respuestas sean detallados. La interfaz &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.data.services.idataserviceconfiguration.aspx"&gt;IDataServiceConfiguration&lt;/a&gt; se ha incluido desde el Framework .NET versi&amp;oacute;n 3.5 SP1.&lt;/p&gt;
&lt;p&gt;Bien, con estas modificaciones, ahora obtendremos el siguiente error para la misma configuraci&amp;oacute;n err&amp;oacute;nea de nuestro servicio: &lt;/p&gt;
&lt;pre&gt;The server encountered an error processing the request. The exception message is &amp;#39;Exception has been thrown by the target of an invocation.&amp;#39;. See server logs for more details. The exception stack trace is:
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct&amp;amp; sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.Data.Services.DataServiceConfiguration.InvokeStaticInitialization(Type type)
   at System.Data.Services.DataServiceConfiguration.Initialize(Type type)
   at System.Data.Services.DataService`1.CreateConfiguration(Type dataServiceType, IDataServiceMetadataProvider provider)
   at System.Data.Services.DataService`1.CreateProvider()
   at System.Data.Services.DataService`1.EnsureProviderAndConfigForRequest()
   at System.Data.Services.DataService`1.HandleRequest()
   at System.Data.Services.DataService`1.ProcessRequestForMessage(Stream messageBody)
   at SyncInvokeProcessRequestForMessage(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&amp;amp; outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp;amp; rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)&lt;/pre&gt;
&lt;p&gt;Siempre recordar que este tipo de configuraciones son con el prop&amp;oacute;sito de obtener m&amp;aacute;s informaci&amp;oacute;n de las excepciones que provoca nuestro servicio, por lo que es recomendable eliminar estas ayudas en entorno de producci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Decir tambi&amp;eacute;n que el comportamiento es equivalente cuando se consume el servicio a trav&amp;eacute;s de la librer&amp;iacute;a de cliente &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.data.services.client.aspx"&gt;System.Data.Services.Client&lt;/a&gt; o, incluso, cuando se incluye la referencia al servicio en el cliente para la generaci&amp;oacute;n del proxy, ya que si no tenemos esta ayuda, el servicio fallar&amp;aacute; y la informaci&amp;oacute;n adicional que obtendremos ser&amp;aacute; &amp;ldquo;The server encountered an error processing the request. See server logs for more details.&amp;rdquo;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=156007" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="ado.net" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/ado.net/default.aspx" /><category term="entity framework" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/entity+framework/default.aspx" /><category term="Microsoft" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/Microsoft/default.aspx" /><category term="debug" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/debug/default.aspx" /><category term="ado.net data services" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/ado.net+data+services/default.aspx" /></entry><entry><title>[How to] Visual Studio Integrated Virtual Debugger de VMware</title><link rel="alternate" type="text/html" href="/blogs/vgarcia/archive/2008/07/05/uso-del-visual-studio-integrated-virtual-debugger-de-vmware.aspx" /><id>/blogs/vgarcia/archive/2008/07/05/uso-del-visual-studio-integrated-virtual-debugger-de-vmware.aspx</id><published>2008-07-05T14:54:00Z</published><updated>2008-07-05T14:54:00Z</updated><content type="html">&lt;p&gt;&lt;em&gt;Visual Studio Integrated Virtual Debugger&lt;/em&gt; de la compañía &lt;a href="http://www.vmware.com/" target="_blank"&gt;VMware&lt;/a&gt; son unas extensiones para el entorno de desarrollo Microsoft Visual Studio 2005 Service Pack 1 o superior que nos permitiran, fundamentalmente, realizar las siguientes tareas: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ejecutar una aplicación en una máquina virtual con un sistema operativo Microsoft Windows 98 o superior con y sin opción de debug activada&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;Adjuntar (to attach) una aplicación desarrollada en Microsoft Visual Studio a un proceso que corre en una máquina virtual con un sistema operativo Microsoft Windows 98 o superior.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Soporta aplicaciones escritas en lenguajes Visual Basic, Visual C# y C/C++ (tanto manejado como nativo). 
&lt;p&gt;Vamos a definir nuestro escenario para un sencillo ejemplo. Utilizaremos el producto &lt;a href="http://www.vmware.com/communities/content/beta/ws65/welcome.html"&gt;VMware Workstation 6.5 beta e.x.p. build - 91182&lt;/a&gt; y una máquina virtual con Microsoft Windows XP SP3, Microsoft .NET Framework 3.5 y las VMware Virtual Machine Tools. 
&lt;p&gt;Es muy importante tener las siguientes consideraciones en cuenta: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;El usuario y la contraseña del host y de la máquina virtual tienen que ser el mismo.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;El usuario debe de tener permisos de administrador en el sistema operativo de la máquina virtual.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;El Firewall del sistema operativo de la máquina virtual debe de estar desactivado.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;El nombre de red del sistema operativo de la máquina virtual debe de ser único en el dominio.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;La configuración de red de la máquina virtual debe de ser Bridged o Host-Only.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;En máquinas virtuales con Microsoft Windows XP Professional debemos ir a la opción Control Panel &amp;gt; Administrative Tools &amp;gt; Local Security Policy &amp;gt; Local Policies &amp;gt; Security Options page y colocar la opción&amp;nbsp; &amp;quot;Network access: Sharing and security model for local accounts&amp;quot; en &amp;quot;Classic - local users authenticated as themselves&amp;quot;.&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;Para permitir la ejecución de programas a través de red en nuestra máquina virtual, debemos de ir al menú Tools del Microsoft Internet Explorer y en Internet Options &amp;gt; Security &amp;gt; Local Intranet hacer click en Sites, click en Advanced y Add new Web site &lt;a&gt;file://*..host&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ahora, en nuestro entorno de desarrollo Microsoft Visual Studio 2008, nos encontraremos con el menú VMware (o con una toolbar con las opciones equivalentes): 
&lt;p&gt;&lt;img height="1" alt="" src="http://geeks.ms/controlpanel/blogs/C:/Users/Vicente/Pictures/cabecera.jpg" width="1" align="middle" border="0" /&gt;&amp;nbsp;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/cabecera_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="426" alt="cabecera" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/cabecera_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Vamos a proceder a crear un perfil en nuestra configuración para ejecutar nuestra aplicación en una máquina virtual determinada. En &lt;em&gt;Options&lt;/em&gt; hacemos click en &lt;em&gt;New&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/New%20Configuration_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="448" alt="New Configuration" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/New%20Configuration_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Personalizamos nuestra configuración indicando, en la sección &lt;em&gt;General,&lt;/em&gt; la ruta del ejecutable en el campo &lt;em&gt;Command&lt;/em&gt;, que, en nuestro caso, es &amp;quot;C:\Users\Vicente\Documents\Visual Studio 2008\Projects\EjemploVMware\EjemploVMware\bin\Debug\EjemploVMware.exe&amp;quot;. Por lo que ya habréis podido suponer que hay que compilar la aplicación antes de crear nuestro entorno de ejecución virtualizado.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20general_4.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="447" alt="fill general" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20general_thumb_1.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La opción de &lt;em&gt;Run Command as &lt;/em&gt;hace referencia a la ruta donde va a estar colocado el ejecutable, y podrá ser un directorio en el sistema operativo que hace de host o en el que se encuentra en la máquina virtual:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/Run%20command%20as_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="448" alt="Run command as" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/Run%20command%20as_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Las siguientes opciones de &lt;em&gt;Remote Debug Monitor &lt;/em&gt;y&lt;em&gt; Remote Debug Monitor Name &lt;/em&gt;sirven para especificar la ruta del Remote Debugger (msvsmon.exe) en el equipo host y el nombre que queremos que tenga su instancia.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En el apartado &lt;em&gt;Virtual Machine &lt;/em&gt;colocaremos la ruta del fichero .vmx de la máquina virtual en la que correremos nuestra aplicación, en nuestro caso &amp;quot;C:\Users\Vicente\Documents\Virtual Machines\Windows XP Professional SP3\Windows XP Professional SP3.vmx&amp;quot;, y, opcionalmente, podemos especificar la ruta de directorios compartidos entre el host y el sistema operativo de la máquina virtual en el campo &lt;em&gt;Shared Folders&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20virtual%20machine_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="449" alt="fill virtual machine" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20virtual%20machine_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;En el apartado &lt;em&gt;Pre-Debug Event&lt;/em&gt; podremos realizar diferentes labores de inicialización dentro del sistema operativo de la máquina virtual, con el objetivo de crear el entorno que nosotros deseemos antes de la ejecución de nuestra aplicación. La opción &lt;em&gt;Revert to Parent Snapshot &lt;/em&gt;nos permitirá hacer regresar a la máquina virtual al una especie de punto de restauración llamado Snapshot que previamente hemos creado; por ejemplo, tener el sistema operativo recién instalado, sin ningún tipo de modificación. En la opción &lt;em&gt;Copy Files&lt;/em&gt;&amp;nbsp; podemos indicarle un conjunto de ficheros separados por &amp;quot;;&amp;quot; para copiar del sistema operativo host a nuestra máquina virtual antes de que el proceso de debug comience. &lt;em&gt;Command Line&lt;/em&gt; contiene un conjunto de comandos separados por &amp;quot;;&amp;quot; para ser ejecutados en la máquina virtual antes de la ejecución de nuestra aplicación.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20pre%20debug%20event_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="449" alt="fill pre debug event" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20pre%20debug%20event_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El apartado de &lt;em&gt;Post-Debug Event&lt;/em&gt; es similar al anterior, ya que son las acciones que se llevan a cabo una vez terminado el proceso de debug en la máquina virtual. La opción de &lt;em&gt;Command Line&lt;/em&gt; nos permitirá ejecutar un conjuto de comandos separados por &amp;quot;;&amp;quot; una vez terminada la ejecución. Y, por último, la opción de &lt;em&gt;Termination Mode &lt;/em&gt;nos permite elegir el estado que queremos que la máquina virtual tome una vez acabado el proceso de debug; podemos no realizar ninguna opción, apagar o suspender la máquina virtual o volver al estado anterior a través de un Snapshot. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20post%20debug%20event_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="449" alt="fill post debug event" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/fill%20post%20debug%20event_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bien, una vez definida nuestra configuración para la prueba sobre la máquina virtual con Microsoft Windows XP, vamos a proceder a la ejecución de nuestra aplicación. Una vez compilada nuestra solución, hacemos click en el menú &lt;em&gt;VMware&lt;/em&gt; y, en esta ocásión, elegiremos &lt;em&gt;Start&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ahora tendremos una ventana de inicio de sesión con nuestro usuario y contraseña para poder pasar a ejecutar la aplicación en nuestra máquina virtual:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/log%20in%20to%20run_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="412" alt="log in to run" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/log%20in%20to%20run_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Recordemos que el usuario y la contraseña deben de coincidir en el equipo host y en la máquina virtual y que, además, debe de tener permisos de administrador en la máquina virtual.&lt;/p&gt;
&lt;p&gt;Y ahora vemos el resultado de nuestra ejecución en la máquina virtual, con nuestra aplicación ejecutándose y el monitor de debug:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/virtual%20machine_2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="404" alt="virtual machine" src="http://geeks.ms/blogs/vgarcia/WindowsLiveWriter/UsodelVisualStudioIntegratedVirtualDebug_E657/virtual%20machine_thumb.jpg" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Evidentemente, es un ejemplo muy simple, pero las posibilidades de ejecución y debug en un escenario controlado son muy interesantes para aplicaciones en las que nuestos equipos puedan correr algún tipo de riesgo o en el proceso de debug de proyectos de dudosa reputación :P&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=90787" width="1" height="1"&gt;</content><author><name>vgarcia</name><uri>http://geeks.ms/members/vgarcia/default.aspx</uri></author><category term="visual studio 2008" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/visual+studio+2008/default.aspx" /><category term="debug" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/debug/default.aspx" /><category term="vmware workstation" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/vmware+workstation/default.aspx" /><category term="visual studio integrated virtual debugger" scheme="http://geeks.ms/blogs/vgarcia/archive/tags/visual+studio+integrated+virtual+debugger/default.aspx" /></entry></feed>