<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>El blog de Francisco Fagas : Desarrollo, Tools, VSTS 2008</title><link>http://geeks.ms/blogs/ffagas/archive/tags/Desarrollo/Tools/VSTS+2008/default.aspx</link><description>Etiquetas: Desarrollo, Tools, VSTS 2008</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>[VSTS] Integrando Flex con VSTS</title><link>http://geeks.ms/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx</link><pubDate>Tue, 15 Sep 2009 19:55:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:155920</guid><dc:creator>Francisco Fagas</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/ffagas/rsscomments.aspx?PostID=155920</wfw:commentRss><comments>http://geeks.ms/blogs/ffagas/archive/2009/09/15/vsts-integrando-flex-con-vsts.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;b&gt;Introducci&amp;oacute;n&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Este art&amp;iacute;culo se revisar&amp;aacute; como integrar una interface hecha en Flex Builder 3.0 con objetos de .Net, en post anteriores se revis&amp;oacute; como hacer la integraci&amp;oacute;n entre Flex y TFS 2008 utilizando el plugin de teamprise en esta ocasi&amp;oacute;n veremos que al momento que integramos nuestro proyecto de Flex a Visual Studio 2008 autom&amp;aacute;ticamente nos habilita la administraci&amp;oacute;n de dicho c&amp;oacute;digo.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;Software Utilizado&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Cliente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Visual Studio 2008 Team Suite&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Team Explorer 2008&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Flex Builder 3.0&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;FluorineFx (&lt;a href="http://www.fluorinefx.com/download.html"&gt;http://www.fluorinefx.com/download.html&lt;/a&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;Servidor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Team Foundation Server 2008&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;Desarrollo&lt;/b&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;Nota: En este art&amp;iacute;culo no revisaremos c&amp;oacute;mo crear una aplicaci&amp;oacute;n en Flex, nos centraremos en secciones de c&amp;oacute;digo propias de la integraci&amp;oacute;n con .Net, en base a esto antes empezar a revisar el art&amp;iacute;culo yo cuento con un proyecto en Flex sencillo que contiene una interface para consultar la informaci&amp;oacute;n de un objeto persona en .Net. La siguiente imagen muestra la interface con la que contamos en flex, en donde cada textbox tiene en su propiedad text el binding con los campos de la variable persona.&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image002_5F00_090B70F6.jpg"&gt;&lt;img height="235" width="417" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image002_5F00_thumb_5F00_40718224.jpg" alt="clip_image002" border="0" title="clip_image002" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Lo siguiente que debemos hacer es agregar al proyecto en flex un action script que contendr&amp;aacute; la definici&amp;oacute;n del objeto persona en la capa de presentaci&amp;oacute;n. El c&amp;oacute;digo es el siguiente:&lt;/p&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;package UIPackages&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PersonaAS&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;{&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; function PersonaAs():&lt;span class="kwrd"&gt;void&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; var ID:String;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; var Nombre:String;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; var Apellido:String;&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;div align="justify" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;

&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;Nota: Deben tener la misma estructura que sus entidades de .Net.&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Ahora abrimos Visual Studio .Net y creamos el proyecto en base a la plantilla FluorineFx ASP.NET Web Site.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;Nota: Este proyecto lo creo en una carpeta de nivel superior de donde se encuentra mi proyecto de Flex para que el mismo forme parte de la estructura de esta aplicaci&amp;oacute;n de ASP.NET.&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image004_5F00_3F2CE945.jpg"&gt;&lt;img height="385" width="593" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image004_5F00_thumb_5F00_526D9FE4.jpg" alt="clip_image004" border="0" title="clip_image004" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;El proyecto creado tendr&amp;aacute; la siguiente estructura:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image006_5F00_70D7E0CD.jpg"&gt;&lt;img height="364" width="261" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image006_5F00_thumb_5F00_7682D4A6.jpg" alt="clip_image006" border="0" title="clip_image006" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Lo siguiente que haremos ser&amp;aacute; agregar un proyecto a la soluci&amp;oacute;n del tipo FluorineFx ServiceLibrary&lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;Nota: Este proyecto tendr&amp;aacute; los servicios que me permitir&amp;aacute;n intercambiar informaci&amp;oacute;n entre mis entidades de .Net y la interface el flex.&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image008_5F00_031081C3.jpg"&gt;&lt;img height="381" width="593" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image008_5F00_thumb_5F00_41299C74.jpg" alt="clip_image008" border="0" title="clip_image008" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Una vez creado el proyecto renombre la clase Sample.cs a Servicios.cs o en su defecto elim&amp;iacute;nela y vuelva a crear una clase Servicios.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image010_5F00_5F27AA68.jpg"&gt;&lt;img height="94" width="153" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image010_5F00_thumb_5F00_16F9EE8C.jpg" alt="clip_image010" border="0" title="clip_image010" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;No olvide agregar las referencias entre los proyectos: Entidades a UiProxy &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image012_5F00_2F1D58E7.jpg"&gt;&lt;img height="412" width="486" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image012_5F00_thumb_5F00_0DBDB34B.jpg" alt="clip_image012" border="0" title="clip_image012" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;y UiProxy a WebApp.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image014_5F00_1A4B6067.jpg"&gt;&lt;img height="412" width="486" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/clip_5F00_image014_5F00_thumb_5F00_06BE00C6.jpg" alt="clip_image014" border="0" title="clip_image014" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En la clase servicio agregamos el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;using &lt;/span&gt;System;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;System.Text;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;FluorineFx;
&lt;span style="color:blue;"&gt;using &lt;/span&gt;Entities;

&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;UIProxy
{
    &lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="color:green;"&gt;Fluorine sample service.
    &lt;/span&gt;&lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;RemotingService&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Fluorine sample service&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Services
    &lt;/span&gt;{
        &lt;span style="color:blue;"&gt;public &lt;/span&gt;Services()
        {
        }

        &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Persona &lt;/span&gt;GetPersona()
        {
            &lt;span style="color:blue;"&gt;return new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Persona &lt;/span&gt;{ ID = &lt;span style="color:#a31515;"&gt;&amp;quot;1234567890&amp;quot;&lt;/span&gt;, Nombre = &lt;span style="color:#a31515;"&gt;&amp;quot;Francisco&amp;quot;&lt;/span&gt;, Apellido = &lt;span style="color:#a31515;"&gt;&amp;quot;Fagas&amp;quot; &lt;/span&gt;};
        }
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En este punto podemos ejecutar la p&amp;aacute;gina Console.aspx y probar nuestro servicio.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/7_5F00_1755FBB4.png"&gt;&lt;img height="612" width="1028" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/7_5F00_thumb_5F00_4E4FD9ED.png" alt="7" border="0" title="7" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Ahora para permitirle a la interface en flex consumir dicho servicio agregaremos el siguiente c&amp;oacute;digo en el archivo mxml.&lt;/p&gt;
&lt;div align="justify"&gt;
&lt;pre class="code"&gt;&lt;span style="color:#006633;"&gt;&amp;lt;mx:Script&amp;gt;
&lt;/span&gt;&amp;lt;![CDATA[
&lt;span style="color:#0033ff;"&gt;import &lt;/span&gt;mx.rpc.events.FaultEvent;
&lt;span style="color:#0033ff;"&gt;import &lt;/span&gt;mx.rpc.events.ResultEvent;
&lt;span style="color:#0033ff;"&gt;import &lt;/span&gt;mx.controls.Alert;
&lt;span style="color:#0033ff;"&gt;import &lt;/span&gt;UIPackages.PersonaAS;
&lt;span style="color:#0033ff;"&gt;import &lt;/span&gt;flash.net.registerClassAlias;

registerClassAlias(&lt;span style="color:#990000;"&gt;&amp;quot;Entities.Persona&amp;quot;&lt;/span&gt;, PersonaAS);

[&lt;span style="color:#0033ff;"&gt;Bindable&lt;/span&gt;]
&lt;span style="color:#0033ff;"&gt;private &lt;/span&gt;&lt;span style="color:#6699cc;"&gt;var &lt;/span&gt;persona : PersonaAS;

&lt;span style="color:#0033ff;"&gt;public &lt;/span&gt;&lt;span style="color:#339966;"&gt;function &lt;/span&gt;personaHandler(event:ResultEvent):&lt;span style="color:#0033ff;"&gt;void
&lt;/span&gt;{
persona = event.result &lt;span style="color:#0033ff;"&gt;as &lt;/span&gt;PersonaAS;
}
&lt;span style="color:#0033ff;"&gt;public &lt;/span&gt;&lt;span style="color:#339966;"&gt;function &lt;/span&gt;faultHandler(event:FaultEvent):&lt;span style="color:#0033ff;"&gt;void
&lt;/span&gt;{
Alert.show(event.fault.message);
}

&lt;span style="color:#0033ff;"&gt;private &lt;/span&gt;&lt;span style="color:#339966;"&gt;function &lt;/span&gt;getPersona():&lt;span style="color:#0033ff;"&gt;void
&lt;/span&gt;{
ro.GetPersona();
}

]]&amp;gt;
&lt;span style="color:#006633;"&gt;&amp;lt;/mx:Script&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;mx:RemoteObject &lt;/span&gt;id=&amp;quot;&lt;span style="color:#990000;"&gt;ro&lt;/span&gt;&amp;quot; destination=&amp;quot;&lt;span style="color:#990000;"&gt;fluorine&lt;/span&gt;&amp;quot; source=&amp;quot;&lt;span style="color:#990000;"&gt;UIProxy.Services&lt;/span&gt;&amp;quot; fault=&amp;quot;faultHandler(event)&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;mx:method &lt;/span&gt;name=&amp;quot;&lt;span style="color:#990000;"&gt;GetPersona&lt;/span&gt;&amp;quot; result=&amp;quot;personaHandler(event)&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
&amp;lt;/mx:RemoteObject&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Para finalizar en las propiedades del proyecto de Flex debemos agregar la ruta del archivo de configuraci&amp;oacute;n:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/10_5F00_786F6208.png"&gt;&lt;img height="441" width="271" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/10_5F00_thumb_5F00_02545374.png" alt="10" border="0" title="10" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;De la siguiente manera:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/9_5F00_6AF92935.png"&gt;&lt;img height="558" width="779" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/9_5F00_thumb_5F00_15F1173B.png" alt="9" border="0" title="9" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Una vez agregado este c&amp;oacute;digo en Flex ejecutamos y podemos ver c&amp;oacute;mo ahora nuestra interface consume datos de nuestro objeto en .Net:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/8_5F00_73B90BB4.png"&gt;&lt;img height="384" width="644" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/8_5F00_thumb_5F00_0378A0B9.png" alt="8" border="0" title="8" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Integraci&amp;oacute;n con TFS 2008 utilizando el Team Explorer&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En un post anterior revisamos como integrar el proyecto desde el IDE de Flex utilizando el plugin de teamprise, a continuaci&amp;oacute;n los links a los posts:&lt;/p&gt;
&lt;p align="justify"&gt;Instalaci&amp;oacute;n del plugin para Flex: &lt;a href="http://geeks.ms/blogs/ffagas/archive/2009/09/14/tfs-2008-plug-in-para-flex.aspx" title="http://geeks.ms/blogs/ffagas/archive/2009/09/14/tfs-2008-plug-in-para-flex.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/14/tfs-2008-plug-in-para-flex.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;C&amp;oacute;mo trabajar con Flex y el Source control de TFS 2008: &lt;a href="http://geeks.ms/blogs/ffagas/archive/2009/09/14/source-control-c-243-mo-trabajar-con-flex-y-source-control-de-tfs.aspx" title="http://geeks.ms/blogs/ffagas/archive/2009/09/14/source-control-c-243-mo-trabajar-con-flex-y-source-control-de-tfs.aspx"&gt;http://geeks.ms/blogs/ffagas/archive/2009/09/14/source-control-c-243-mo-trabajar-con-flex-y-source-control-de-tfs.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;En este momento como se podr&amp;aacute;n haber dado cuenta mi proyecto de Flex es parte de mi proyecto de ASP.NET lo cual nos permite administrar dicho c&amp;oacute;digo directamente desde el IDE del Visual Studio 2008, es decir, proteger, desproteger, etc.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/11_5F00_2176AEAD.png"&gt;&lt;img height="612" width="1028" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/11_5F00_thumb_5F00_25A08672.png" alt="11" border="0" title="11" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&lt;em&gt;Nota: Esta integraci&amp;oacute;n no es nativa con el IDE de Flex antes de poder editar los archivos en Flex Builder es necesario realizar la respectiva desprotecci&amp;oacute;n del c&amp;oacute;digo desde el Visual Studio de lo contrario les aparecer&amp;aacute; el siguiente mensaje en Flex:&lt;/em&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/12_5F00_2B4B7A4B.png"&gt;&lt;img height="168" width="536" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ffagas/12_5F00_thumb_5F00_5EA73DA7.png" alt="12" border="0" title="12" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Si se selecciona Si corren el riesgo de que la siguiente vez que obtengan la &amp;uacute;ltima versi&amp;oacute;n esta no contenga los cambios realizados en la m&amp;aacute;quina cliente. La ventaja es que no es necesario comprar un plugin y podemos administrar el c&amp;oacute;digo directamente desde el Visual Studio, y las desventajas en base a la anteriormente comentada nacen m&amp;aacute;s alrededor de la modificaci&amp;oacute;n de archivos sin la administraci&amp;oacute;n directa desde un IDE hacia el source control.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=155920" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/VSTS+2008/default.aspx">VSTS 2008</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Tools/default.aspx">Tools</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/TFS+2008/default.aspx">TFS 2008</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Source+Control/default.aspx">Source Control</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Flex/default.aspx">Flex</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/Aplicaciones+RIA/default.aspx">Aplicaciones RIA</category><category domain="http://geeks.ms/blogs/ffagas/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item></channel></rss>