10 AddIns para Visual Studio 2003

Hace unos días, en MSDN Magazine, apareció un artículo muy interesante sobre los 10 AddIns que todos los desarrolladores deben poseer, si utilizan Visual Studio 2003. La lista completa de productos era la siguiente;

A algunos los conocía, pero realmente me quedé fascinado con el "documentador" GhostDoc y con el VSMouseBindings (por fin puedo aprovechar mim mouse al 100% !!!)

El primero, es un nuevo addin, que documenta codigo, pero partiendo de la estructura de los nombres que se deben documentar, realiza una ingenieria inversa y genera el código para documentacion correspondiente.

Por ejemplo, si poseemos la declaracion de la siguiente funcion:

public System.Data.DataSet GetCustomer(string CustomerId){}

Luego de aplicar el proceso de documentacion, se generan lo siguiente.

/// <summary>

/// Gets the customer.

/// </summary>

/// <param name="CustomerId">The customer id.</param>

/// <returns></returns>

public System.Data.DataSet GetCustomer(string CustomerId){} 

Para los constructores, el proceso es similar.

public Customers(){}

   

/// <summary>

/// Initializes a new instance of the <see cref="Customers"/> class.

/// </summary>

public Customers(){}  

Me ha dejado con :D, ya que es bastante útil y posee un pequeño editor de reglas, donde se puede personalizar aun mas las capacidades de generación de documentación.

Un detalle –> VB.NET.Enabled = False :S

Saludos.

PD: Me hizo acordar a aquellos días, hace bastante tiempo, cuando con Gustavo creamos el bCodeDevUtils para Visual Studio 2003, he aqui una pequeña demo. Lástima que ya con Visual Studio 2005, no tiene sentido mantener este AddIn ya que toda esa funcionalidad la posee internamente Visual Studio 2005.

Advertisements

Visual Studio 2005 – SourceSafe 2005

Hace unos meses, estaba usando la Beta 2 de Visual Studio 2005. Desde su lanzamiento oficial, hace unos días, me he actualizado a la versión final. Todavía no he desarrollado ninguna aplicación importante, sino que me he dedicado a probar y conocer las nuevas funcionalidades que trae Visual Studio 2005.
Sin embargo, dentro de este completísimo entorno de programación, hay una herramienta que también esta integrada 100% a Visual Studio 2005  y a Visual Studio 2003, es el Visual SourceSafe 2005. Tiene muchos cambios y la verdad es que funciona muy bien. Debajo les presento lo nuevo de Visual SourceSafe 2005.

Saludos



Enhanced Performance and Stability

In support of database performance, Visual SourceSafe has increased data storage to 4 GB, and has enlarged archive limits. The file retrieval operation is two times faster than in older versions. Visual SourceSafe reduces the need to analyze, administer, and repair databases. It is compatible and interoperable with version 4.0, 5.0, and 6.0 databases.

Support for Larger Projects and Distributed Teams

Team efforts are becoming increasingly global cross time zones, domains, and even continents. Visual SourceSafe has changed in several ways to address the needs of global teams:

  • Regional Time Zones.   Visual SourceSafe now manages change histories adjusted to your local regional time zone while maintaining a separate audit log of changes synchronized to the server reference clock. Minimal configuration is required for existing databases.
  • Multiple Languages.   Dynamic updates are now available for any installed language compatible with the Windows code page.
  • Unicode.   In past versions, you could store Unicode files in a Visual SourceSafe database, but they were treated as binary files on which Visual SourceSafe could not perform database operations. Now Visual SourceSafe recognizes your Unicode files as text, which allows all supported editor programs to work with Unicode content.
  • Programming and Customization Support

    Your programming team can take advantage of new automation and extensibility features to automate processes and extend the functionality of Visual SourceSafe. Developers can use events, such as OnBeforeCheckout or OnAfterCheckIn, to automate processes. Visual SourceSafe allows you to create custom tasks that retrieve and download source code files before building them with an automated build. In support of your managed code projects, Visual SourceSafe has become fully extensible. Your team can create new Visual Basic or Visual C# functionality using the IVSS automation model and the .NET Programmable Interop Assemblies (PIA). When you developed XML Web services created using ASP.NET with previous versions of Visual SourceSafe, all XML files, such as Web.config, *.wsdl, *.disco, and *.map files, were stored in a binary format. Thus only one developer at a time could modify or check out these files, limiting the possibilities for parallel development tasks. Also, Visual SourceSafe could not be used to compare or merge these files, because they were stored as binary. The latest version of Visual SourceSafe treats Unicode-encoded file content, including XML files, as text, allowing your developers to store, compare, and merge these files just like any other text files.

    File Merge Improvements

    In support of parallel operations, Visual SourceSafe features a new Copy-Modify-Merge workstyle for multiple checkouts from a database. Selectable upon database creation as an alternative to the traditional Lock-Modify-Unlock workstyle, this workstyle allows team members to share files while ensuring that no team member’s changes will be lost or overwritten. The merge engine for Visual SourceSafe has been reworked to accommodate multiple checkouts and simplify merge operations. You can now set merging at a database level, and then use the feature through dialog boxes with built-in Help. You can use a third-party editor program for merging if desired, or choose to use significantly improved internal mechanisms to view and reconcile file differences.

    Updated Look for Client Programs

    The traditional Visual SourceSafe Explorer and Visual SourceSafe Administrator user interfaces have been updated to provide menus and toolbars that are compatible with the user interface elements of Visual Studio or Microsoft Office. Other enhanced user interface elements include several wizards to help guide you through such database operations as archiving and restoring projects. A redesigned Add SourceSafe Database wizard significantly simplifies database creation.

    Changes in the SourceSafe Plug-ins for Visual Studio


    Remote Internet Access.
      This release of Visual SourceSafe introduces a new SourceSafe Internet plug-in for Visual Studio source control. The plug-in and its associated Web service enable remote Internet access to Visual SourceSafe databases over HTTP or HTTPS. The SourceSafe Internet plug-in supports the basic operations of database open, database add, check-in, checkout, and get, but does not provide rename, delete, get by time or by label, history, labeling, or share/branch functions. This plug-in is particularly helpful when you need to access your Visual SourceSafe databases when you are on the road.

    Improved LAN Access.   This release of Visual SourceSafe enhances the existing SourceSafe plug-in for Visual Studio. Now called the SourceSafe LAN plug-in, this source control package can either operate as it has in previous releases or optionally work with a LAN booster service that enhances performance. The functionality provided by the plug-in is basically the same, whether or not use the LAN booster.

    Enterprise Library for .NET Framework 2.0: November Community Technology Preview

    Como ya comenté antes, hace unos días se ha liberado la version de Noviembre de Enterprise Library  para el .Net Framework 2.0. Pero sin embargo todavía le faltan un par de componentes y funcionalidades para que tenga la misma funcionalidad que la version para el .Net Framework 1.1 (Enterprise Library Junio 2005). Por ejemplo, no está incluido el componente para Criptografía, y quedan otro par de detalles para revisar dentro de Enterprise Library, la herramienta de Configuracion, por ejemplo.

    Los detalles completos se pueden ver en un muy buen WebCast aquí.
    Cuando la versión completa este disponible, la probaré un poco y les comentaré al respecto.

    Saludos

    Write a Gadget for Live.com and you might win an Xbox 360!

    Mientras probaba alguna de las new features de Windows Live, me encontré con la agradable noticia de otro concurso que de premio entrega una XBox360. En este caso es por la creacion de un nuevo gadget  (plugin??) para este Microsoft Gadget.

    Las bases del concurso estan aquí y para poder crear un Gadget propio, es necesario podemos leer el siguiente articulo, el siguiente tutorial o descargar un código de ejemplo desde aquí. La verdad es que la idea está muy buena, y hasta el momento, la mayoria son "games" de codigos fuentes opensource que simplemente los han empaquetado dentro de un Gadget.

    Saludos

    Enterprise Library for .NET Framework 2.0 – Novemeber CTP

    Al mismo tiempo que Visual Studio 2005, se ha liberado una versión de Enterprise Library para .Net Framework 2.0.

    Esta versión se denomina Enterprise Library for .NET Framework 2.0 – November CTP, y la podemos encontrar aquí.

    Saludos

    PD: nos han cambiado tambien el look and feel del site de GotDotNet, pero me reservo los comentarios 😀

    Error NDoc.Core.DocumenterException

    Mucho más para contar sobre NDoc, no tengo. Además supongo que todo el mundo lo conoce (y lo utiliza :d).
    Sin embargo, me ha sucedido algo bastante raro mientras lo utilizaba. Estaba generando un proyecto com muchos assemblies dentro del mismo y me apareció el siguiente error:


    An error occured while trying to build the documentation.
      Exception: NDoc.Core.DocumenterException
    This document already has a DocumentElement node.
      Exception: System.InvalidOperationException
    This document already has a DocumentElement node.
      Exception: NDoc.Core.DocumenterException at NDoc.Documenter.Msdn.MsdnDocumenter.Build(Project project) at NDoc.Gui.BuildWorker.ThreadProc()
      Exception: System.InvalidOperationException at System.Xml.XmlDocument.IsValidChildType(XmlNodeType type) at System.Xml.XmlDocument.AppendChildForLoad(XmlNode newChild, XmlDocument doc) at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc) at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace) at System.Xml.XmlDocument.Load(XmlReader reader) at NDoc.Documenter.Msdn.MsdnDocumenter.Build(Project project)


    No encontré mucha ayuda en internet, ni tampoco en los foros. Pero se me ocurrió probar, generar la documentacion con la version vieja de NDoc (v1.2), y … funcionaba !!!
    Todavía no se muy bien que causó este error, pero por suerte la version 1.2 de NDoc, me saco de apuros 😀

    Saludos

    Probando Windows Vista

    Buenas,

    mientras se termina de bajar la version final/completa de Visual Studio 2005, que supongo que debe ser requerida por muchisima gente, ya que pocas veces el site del MSDN ponia tan baja tasa de transferencia (inclusive se corta esporadicamente). Me perdía, como iba diciendo, en estos días y aprovechando mis nuevos discos externos, empecé a probar la beta del Windows Vista en una maquina virtual utilizando Virtual PC.

    Una vez configurada la misma, para que funcione desde el disco externo y con los requerimientos mínimos,

     

    levantamos la Maquina Virtual, para mi sorpresa, el tiempo de respuesta fue bastante bueno, y en unos pocos segundos, el Sistema Operativo estaba en funcionamiento, durante unos segundos el procesador estuvo al 100%, luego se estabilizó y pude seguir trabajando correctamente

     
     

    La primera accion del Sistema Operativo, fue reconocer y reconfigurar el Hardware sobre el que se estaba ejecutando.
    En este caso, actualizaba la configuracion para trabajar con un Procesador Intel y actualizó los demas drivers para manejar el Hardware.

     

    Obviamente el siguiente paso fue pedir, el reinicio del Sistema Operativo (si no bootaba no es Windows).
    Esto, después de mostrar muchisimos mensajes de seguridad, avisando que fltaba un antivirus, que las actualizaciones no estaban al dia, etc.

     

    La pantalla de ShutDown de Windows, es bastante interesante ya que muestra todas las acciones que se estan realizando. 

     

    Y como resultado final, un par de minutos de juego con el Sistema Operativo, el disco externo que funciona correctamente y con muy buena velocidad de transferencia para trabahjar con Maquinas Virtuales. Y un monton de intrigas sobre el este nuevo SO, que espero poder seguir probando y seguir posteando un poco sobre el mismo.

    Aunque con la salida final de VS2005, supongo que estare bastante ocupado. 😀

    Saludos

    Autenticacion de Usuarios con Active Directory

    Hace un tiempo que estoy desarrollando un componente para la autenticacion con varios sistemas que manejan usuarios. No todos son LDAP compatibles, por lo que hay que "personalizarlos" un poco, antes de ponerlos en marcha. En el caso concreto de Active Directory, despues de probar varias funciones, la mejor que encontré fue la siguiente:

    public bool IsAuthenticated(string domain, string username, string pwd)

    {

     string domainAndUsername = domain + @"\" + username;

     DirectoryEntry entry = new DirectoryEntry( _path, domainAndUsername, pwd);

     

     try

     {

      // Bind to the native AdsObject to force authentication.

      Object obj = entry.NativeObject;

      DirectorySearcher search = new DirectorySearcher(entry);

      search.Filter = "(SAMAccountName=" + username + ")";

      search.PropertiesToLoad.Add("cn");

      SearchResult result = search.FindOne();

      if(null == result)

      {

       return false;

      }

      // Update the new path to the user in the directory

      _path = result.Path;

      _filterAttribute = (String)result.Properties["cn"][0];

     }

     catch (Exception ex)

     {

      throw new Exception("Error authenticating user. " + ex.Message);

     }

     return true;

    }

    Esta función trabaja con los objetos de la librería System.DirectoryServices. y para "reflejar" a un usuario dentro de los objetos de Active Directory, se utiliza el objeto DirectoryEntry. Este objeto encapsula la funcionalidad de un Nodo de Active Directory, y en este caso se presenta como un usuario. Para crear un objeto de este tipo se utiliza el Constructor que inicializa una nueva instancia de la clase DirectoryEntry con las propiedades Path, Username y Password.

    path
    Ruta de acceso de DirectoryEntry. La propiedad Path se inicializa en este valor.
    username
    Nombre de usuario que se va a utilizar para autenticar el cliente. La propiedad Username se inicializa en este valor.
    password
    Contraseña que se va a utilizar para autenticar el cliente. La propiedad Password se inicializa en este valor.

    Y personalmente, me ha sido muy útil 😀

    Saludos

    PD: La funcion original y un artículo completísimo sobre desarrollo de aplicaciones seguras se puede encontrar en el MSDN, aqui –>.

    Problemas de hard … :S

    Semana de desconexion total, muchas novedades y poco tiempo para asimilarlas. 😀

    Sin embargo, entre las cosas interesantes que puedo rescatar, está uno de los regalos que me hizo mi chica, un disco externo para la Notebook. Y, para variar, tuve un par de problemas con el mismo, pero la solucion fue la más simple de todas.

    El disco que me regaló mi chica era un Lacie de 50GB, realmente un espectaculo y de un diseño muy lindo.

    Según las especificaciones, XP lo reconocia automaticamente, pero imagen mi sorpresa al ver lo siguiente cuando lo enchufe al puerto USB.

    No fue para nada agradable, ver un BlueScreen, en la notebook. Despues de renegar un rato y recorrer muchisimos foros de usuarios de este hard. Me encuentro con la sorpresa, que en la NB de mi chica funciona de perlas !!! Como ambas notebooks son del mismo fabricante y modelo, empezó el delicado trabajo de buscar la diferencia entre ambas.
    Desde el setup hasta las versiones de los drivers estaba todo igual, salvo en la version del driver del USB Root 2.0, que en el caso de la otra notebook era inferior. Yo, tenia la version 5.1.2600.2458 y mi chica la version 5.1.2600.0. Pequeñas ventajas de no correr el Windows Update cuando XP lo propone.
    En otras palabras, yo estaba sufriendo por tener las actualizaciones de mi PC al dia.
    Pues bien, a bajar esa versión del driver. Supuestamente, se podia bajar desde WindowsUpdate, pero como era una "actualizacion" vieja, para el SP1 de XP, no estaba mas disponible. Buscando un poco mas por ahi, encontré un exe con esta version, asi que desinstale el driver y lo instale "a mano".
    Con esta version del driver, al momento de enchufar el disco, no e dió más un BlueScreen, pero (dichoso pero) empecé a tener otro tipo de problemas.

     

     

     

    Estas imagenes las saqué del site (–>), donde otra persona tuvo este problema pero con otro periferico para el USB.
    En pocas palabras, mi puerto USB no entregaba la energia suficiente para alimentar el disco externo. Como los fabricantes del disco, son muy previsores, el mismo viene con un cable USB para conectarlo a la PC y otro (también USB) para conectarlo al power. Es decir, si tu PC se queda corto de energia, te comes otro puerto USB más y desde ahi alimentas el disco.
    Con esta configuración, y los 2 USBs tomados en la notebook, el disco seguía sin funcionar. (Como dirián aquí, ya me estaba cabreando :@)
    Peor aun, en la notebook de mi chica, funcionaba solo con 1 cable USB !!!

    Pero como siempre, tarde y cansado, encontré una solución. Si enchufaba el cable de datos al USB de mi notebook y luego el cable de alimentacion al USB de la notebook de la Pao, el disco, en algunas ocasiones funcionaba correctamente. No era la solucion mas aconsejable, pero me permitia utilizar el disco.

    Sin embargo, despues de perder todo el sábado y medio domingo con este tema, y de aprender los voltajes y amperajes con los que funciona un USB, como se reparte esta carga y como se puede configurar, decidi que ese disco PARA MI NO FUNCIONABA.
    Asi que, solucion mágica, fuimos a la tienda donde lo compró mi chica, vi que otros discos habia en stock y lo cambie por un IOmega, un pocquito mas caro, pero que funciona de perlas en mi Notebook.

    El disco es el siguiente –>

     

    Iomega 80 GB 2.5" Portable USB 2.0 Hard Drive, USB Cable, Supplemental power cord (PS2).

    Finalmente, despues de muchas horas de luchas con algun problema raro, ya tengo 80GB mas disponibles para trabajar :D.

    Saludos.

    PD: Antes de esto mandé un mail al soporte del disco que no funcionaba, comentando los nros de versiones, problemas y demas. La respuesta automatica fue; que actualice los drivers de XP. Por suerte a esa altura ya lo habia cambiado, sino desde el 4to piso lo tiraba a la pileta :@.

    Enterprise Library en el horno

    Estas palabras las escribió Haaron Gonzalez en su blog, y la verdad es que es una forma muy original de presentar a Enterprise Library.

    Saludos 😀


    Si por curiosidad me pongo a cocinar un pastel de chocolate, es probable que lo haga, es probable que lo haga con muy mal sabor, en realidad yo no tengo mucha experiencia en la cocina y mucho menos en preparar un pastel de chocolate. Como voy saber balancear las cantidades de los ingredientes para poder asegurar que mi pastel tendrá un exquisito sabor. No tengo ni la más remota idea de cómo poder hacerlo y que además de todo quede rico.

    Quizás puedo empezar a intentar y hacer el mejor esfuerzo, en pocas palabras, a prueba y error, pero en definitiva, si el pastel es para mi solito no hay problema me aguanto el mal sabor, hago como que sabe rico. Pero por otro lado si el pastel es para mi esposa o para mi hijo incluso para venderlo, pues entonces mayor riesgo ya que quiero quedar bien con ellos, hacer que lo disfruten y bueno en todo caso obtener una ganancia.

    Una opción es ir a una tienda y comprar la harina para pastel donde los ingredientes básicos ya vienen bien mezclados, con la cantidad exacta de ingredientes para una determinada porción y además al reverso tiene la receta donde se especifica paso a paso que ingredientes y que cantidades faltan para terminar de mezclar y así poder hacer un rico y exquisito pastel.

    El grupo de Patrones y Prácticas de Microsoft es un grupo dedicado a producir mezclas y recetas para cocinar soluciones de información sustentadas con tecnologías de Microsoft. Si eres un arquitecto de soluciones y necesitas saber como construir ciertos artefactos de software o soluciones de información pues déjame infórmate que este grupo tiene publicado lineamientos, documentación, códigos y mejores practicas disponibles gratuitamente para que de manera rápida puedas tu mezclar componentes y lineamientos de desarrollo para rápidamente producir exquisitas soluciones de información que puedan ser degustadas por los usuarios finales.

    Aquel que no aprende de los errores de los demás esta destinado a cometerlos
    Practicas probadas para resultados predecibles

    Microsoft Pattern & Practices