El Bruno

Blog dedicado a las experiencias del desarrollo con tecnologías Microsoft.

noviembre 2007 - Posts

Microsoft Gatineau (:D Analytics ...)

Buenas

muchos de ustedes conocerán Google Analytics, yo desde hace bastante tiempo lo utilizo en ElBruno.com y la verdad es que siempre me ha gustado como producto. Obviamente nuestros amigos de Microsoft desde hace tiempo tienen su propio producto para este tipo de aplicaciones y por fin después de esperar bastante tiempo me ha llegado la invitación a la fase Beta.

Se trata de Microsoft Gatineau, un servicio copiado de GA para el análisis de información sobre estadísticas de navegación de uno o más websites. Si alguien quiere darse de alta simplemente puede registrarse en http://advertising.microsoft.com/gatineau y esperar que aprueben su petición

Nota: durante la fase de la versión beta, los usuarios del proyecto Gatineau se necesitará para crear una cuenta adCenter. Aunque el uso de proyecto Gatineau es completamente de forma gratuita, hay un cargo único $5 al crear una cuenta adCenter. Si ya tiene una cuenta adCenter, puede utilizar la dirección de correo electrónico asociada con esa cuenta.

Todavía no poseo datos de análisis, pero les dejo un par de screenshots de la interfaz en general:

 

Saludos @ Home

El Bruno

Posted miércoles, 28 de noviembre de 2007 23:32 by elbruno | with no comments

[Word 2007] Add-in: Microsoft Math

Buenas

mientras en mi flia siguen esperando la pequeña aplicación que les prometí, nuestros amigos de MSDN me han salvado con un nuevo addin para Word 2007, orientado a las funciones matemáticas. Éste addin agrega funciones de cálculo y capacidades gráficas a la Ribbon en Word 2007.

Con el complemento de Microsoft Math para Word 2007, es posible:

  • gráficar una función, ecuación u desigualdad en 2-D o 3D
  • resolver una ecuación
  • calcular un resultado numérico
  • simplificar una expresión algebraica

He aquí unos pantallazos del AddIn

 

 

Descarga: http://www.microsoft.com/downloads/details.aspx?FamilyID=030FAE9C-704F-48CA-971D-56241AEFC764&displaylang=en

Saludos @ Home

El Bruno

Posted martes, 27 de noviembre de 2007 20:57 by elbruno | with no comments

Filed under:

[DSL] Roadmap para el futuro de las DSL Tools

Buenas

hace unos días Stuart Kent nos comentaba en su blog parte de las ideas que guían el Roadmap para las Domain Specific Language Tools para Visual Studio. El post completo lo pueden leer en http://blogs.msdn.com/stuart_kent/archive/2007/11/22/dsl-tools-beyond-vs2008.aspx; pero básicamente en la versión actual para Microsoft Visual Studio 2008 se apoya los siguientes conceptos:

  • Evolucionar las capacidades gráficas para el diseñador y la plataforma para la generación de código con el objetivo de proporcionar más funciones, para integrarse mejor con otras partes de la plataforma Visual Studio.
  • Generalizar el enfoque para la creación en las herramientas DSL, para soportar varios tipos de extensión en Visual Studio e integrar el proceso de creación de DSLs con las mismas.

Lamentablemente, con la salida de VS2008 no veremos muchos cambios pero si hay una promesa muy grande de cambios para Rosario (aunque falta mucho ...).

Si como yo, están migrando proyectos de DSL de VS2005 a VS2008, seguramente este post les dejará un poco más claro la cantidad de trabajo que todavía tenemos por delante :D

 

Saludos

El Bruno

Posted lunes, 26 de noviembre de 2007 16:50 by elbruno | 7 comment(s)

[VS2008] Instalador para el Team Explorer 2008 (solo como Sylar)

Buenas

si como yo has instalado Microsoft Visual Studio 2008 y necesitas trabajar con un servidor de Team Foundation Server, seguramente has comenzado a buscar el Team Explorer 2008.

Una opcion era descargar el Visual Studio Team System 2008 Team Foundation Server (90-day trial) y esperar a enero cuando se actualicen las licencias y software de las subscripciones de MSDN; ahora tenemos otra más:

ya podemos descargar Visual Studio Team System 2008 Team Explorer directamente desde Microsoft Downloads.

Descarga: http://www.microsoft.com/downloads/details.aspx?familyid=0ED12659-3D41-4420-BBB0-A46E51BFCA86&displaylang=en

Obviamente es necesario una Team Foundation Server Client Access License (CAL) para utilizar Team Explorer y acceder a un Team Foundation Server.

 

Saludos @ Home

El Bruno

Posted sábado, 24 de noviembre de 2007 21:39 by elbruno | with no comments

[EntLib] Migrando Applications Blocks de EntLib 2.0 a EntLib 3.1

Buenas

si has extendido las capacidades iniciales de Enterprise Library 2.0 y quieres migrar las mismas a Enterprise Library 3.1, seguramente te encuentres con el siguiente error despues de actualizar las referencias.

Excepción

------ Build started: Project: XX, Configuration: Debug Any CPU ------ ... ...\CategorySourceSerializableConfigurationSection.cs(31,12): error CS0305: Using the generic type 'Microsoft.Practices.EnterpriseLibrary.Common.Configuration.NameTypeConfigurationElementCollection<T,TCustomElementData>' requires '2' type arguments ... Compile complete -- 5 errors, 0 warnings ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Nota: en mi infinita ignorancia y acostumbrado a la actualización de 1.1 a 2.0, pensé que simplemente actualizando las referencias del proyecto / solución a Enterprise Library 3.1 todo funcionaba pero una vez más la realidad me puso a trabajar un poco más de la cuenta.

 

Pues bien, la excepción en tiempo de compilación hace referencia a

Microsoft.Practices.EnterpriseLibrary.Common.Configuration.NameTypeConfigurationElementCollection

en la línea 6 del siguiente fragmento de código:

1 /// <summary> 2 /// Gets the CategorySource providers. 3 /// </summary> 4 /// <value>The CategorySource providers.</value> 5 [ConfigurationProperty(CategorySourceSerializableConfigurationSection.providersProperty_)] 6 public NameTypeConfigurationElementCollection<CategorySourceConfigurationElement> 7 CategorySourceProviders 8 { 9 get 10 { 11 return (NameTypeConfigurationElementCollection 12 <CategorySourceConfigurationElement>) 13 this[CategorySourceSerializableConfigurationSection.providersProperty_]; 14 } 15 }

Cómo a esta información no la tenía muy fresca en mi memoria me tuve que poner a leer (y aprender !!!) de nuevo el funcionamiento del namespace Microsoft.Practices.EnterpriseLibrary.Common.Configuration y después de una serie de pruebas solucioné el problema agregando el 2do argumento que también hace referencia al mismo tipo que el 1ro. Por ejemplo:

1 /// <summary> 2 /// Gets the CategorySource providers. 3 /// </summary> 4 /// <value>The CategorySource providers.</value> 5 [ConfigurationProperty(CategorySourceSerializableConfigurationSection.providersProperty_)] 6 public NameTypeConfigurationElementCollection<CategorySourceConfigurationElement, CategorySourceConfigurationElement> 7 CategorySourceProviders 8 { 9 get 10 { 11 return (NameTypeConfigurationElementCollection 12 <CategorySourceConfigurationElement>) 13 this[CategorySourceSerializableConfigurationSection.providersProperty_]; 14 } 15 }

La base de este comportamiento es que el 1er parámetro define el tipo de NameTypeConfigurationElement que contiene la colección, y el 2do parámetro es el tipo para la configuración personalizada de la colección que se implementa para el Application Block. (en versiones anteriores no era necesaria esta distinción)

Finalmente viernes a la tarde problema solucionado !!!!

 

Saludos @ Here

El Bruno

Posted viernes, 23 de noviembre de 2007 15:01 by elbruno | with no comments

[TFS2008] Cambios en las licencias (no es gratis, pero casi ...)

Buenas,

interesante cambio en parte del licenciamiento de Team Foundation Server, a partir de la versión 2008 la creación de nuevos elementos de trabajo y la visualización de los los elementos de trabajo no es necesario comprar una CAL.

He aquí parte de la noticia:

Licensing Changes in Team Foundation Server / CAL 2008

Microsoft has made one licensing change in the Team Foundation Server CAL requirement with the release of VSTS 2008. The change is as follows: You do not need a CAL to access work item tracking functionality, to create new work items or view and update work items you opened.

You may do the following:

· Open a new work item of any type within the system. 

· Access to work items opened only by you.  You cannot view or access a work item opened by anyone else.

· Edit any work item you opened to clarify the original entry, change work item fields, or make annotations to the discussion of the opened work item. You cannot resolve, close or change the work item state in any way.

The change will only apply to TFS 2005 when customers are exercising downgrade rights from TFS 2008. TFS 2005 customers that purchased Software Assurance with their licenses will be able to apply this new licensing exception to their 2005 version.

Fuente: http://blogs.msdn.com/adamga/archive/2007/11/20/tfs-for-defect-tracking-licensing-change.aspx

 

Saludos @ 23g9kj

El Bruno

Posted viernes, 23 de noviembre de 2007 10:06 by elbruno | 1 comment(s)

[VS2008] SDK Released !!!

Buenas

una vez instalado Microsoft Visual Studio 2008, ya comienzo a migrar algunos proyectos y a probar como se comportan en el nuevo IDE. Muchos de los últimos proyectos en los que estoy trabajando están orientados a extender capacidades del IDE de VS, por lo que necesitaba el SDK.

Nuestros amigos de Visual Studio eXtensibility sólo un día después del lanzamiento del RTM han lanzado Visual Studio 2008 SDK 1.0 y Visual Studio 2008 Shell para que podamos comenzar a migrar y a aprender las nuevas características de esta version. Ambas herramientas son bastante complejas como para detallarlas en un post, pero si quieres más información puedes navegar Visual Studio 2008 Shell overview y Visual Studio 2008 Shell details.

 

Saludos @ Madrid

El Bruno

Posted miércoles, 21 de noviembre de 2007 8:35 by elbruno | 1 comment(s)

Filed under: ,

SQL Server y el sentido comun

Buenas,

desde hace unos días sigo con cautela un blog donde un compañero ha descubierto algunas de las capacidades extendidas que posee Microsoft SQL Server 2005. Como muchos saben SQL Server posee una serie de stored procedures extendidos que brindan unas funcionalidades muy interesantes, pero que en muy pocos casos he encontrado la necesidad de utilizar (en realidad creo que nunca)

Por mencionar algunos podría hablar de xp_fileexist, para verificar si existe un archivo; o xp_regread para leer una entrada del registro de windows; o inclusive xp_terminate_process para destruir un proceso a partir de su ID (que peligro !!!). Sin embargo el más peligroso de todos a mi humilde entender es xp_cmdshell. Como la realidad siempre supera a la ficción, simplemente me remitiré a una pequeña experiencia para ilustrar este caso.

Hace unos años, cuando trabajaba con el amigo Iteya y mis semanas se repartían entre Córdoba y Buenos Aires; me llamaron de un proyecto para revisar un problema que tenían con COM+, algunas transacciones y SQL Server. En este tipo de escenarios y cuando de acceso a datos y transacciones hablamos, yo soy bastante práctico; mis premisas son la siguientes:

  • La base de datos solo debe realizar acciones de INSERT, UPDATE, DELETE o SELECT
  • Se debe acceder a la base de datos utilizando Procedimientos Almacenados
  • Los procedimientos almacenados no deben tener lógica dentro de los mismos (ni siquiera un IF)
  • La gestión de las transacciones es responsabilidad de a lógica de negocios ... aunque bueno este es un tema aparte :D

Volviendo a esos días, la frase con la que me recibieron fue: "existen casos donde se lanza un proceso de actualización de datos dentro de una transacción, pero si algo falla, el Rollback no elimina los datos". Frente a este escenario, me puse a revisar un poco la configuración del sistema, un poco el código de las clases de negocio y todo parecía estar en orden, sin embargo dentro de un procedimiento almacenado encontré la siguiente línea:

set @command = 'c:\Procesador.exe' + @CommandID
exec master..xp_cmdshell @command

Desde mi más profunda ignorancia pregunté que era "Procesador.exe"; y me encontre con una aplicacion desarrollada en FOX que recibía un parámetro y realizaba algunas acciones de acuerdo al mismo y de la que se esperaba que "mágicamente" utilizase el contexto transaccional en el que se estaba ejecutando la lógica de negocios. Obviamente si en algun momento la transaccion "se cortaba" los datos que había procesado la aplicación de FOX quedaban en ese estado, pero esto era un misterio para el equipo de desarrollo.

Por suerte en las oficinas de informática de las grandes empresas, usualmente no se encuentran motosierras ni sables láser colgados en las paredes, porque creo que después de ver este escenario, mi primer instinto hubiese sido tomar un sable láser y comenzar con la colección de mancos. Pero opté por un pequeño gráfico y de un par de horas explicando como funciona COM+, que son los contextos transaccionales, etc.; y además les dejé las siguientes preguntas para una autoevaluación para los procedimientos que comienzan con xp_ ...

  • Si necesito leer el registro de Windows desde mi servidor de base de datos, ¿estoy seguro que no necesito comenzar a separar en un par de layers para asegurar el aislamiento de las capas de mi app?
  • ¿Cuál es la razon aparente para verificar si existe un archivo desde el servidor de DB?
  • etc.

y como una buena práctica para evitar problemas a futuro, recomiendo realizar un search por "xp_" en un database script para verificar si no estamos tentando al destino.

 

Saludos @ VS2008 Download home

El Bruno

Posted lunes, 19 de noviembre de 2007 22:34 by elbruno | with no comments

[VS2008] Is here !!! (recomiendo ademas, unas cervezas y una buena peli para esperar mientras se descarga)

Buenas

finalmente después de mucho esperar y de errores como los siguientes

Free Image Hosting at www.ImageShack.us

Microsoft Visual Studio 2008 está disponible para descargar para los suscriptores de MSDN.

Sin embargo como bien dice el amigo Pablo, la descarga está muy lenta asi que paciencia, recomiendo la peli de Transformers y algo de la 2da temporada de House para la dulce espera.

 

Saludos @ Madrid

El Bruno

Posted lunes, 19 de noviembre de 2007 20:50 by elbruno | 2 comment(s)

Filed under: ,

[VS2008] Mas cerca de lo que piensas ... (aunque no tan cerca como quisieras)

Buenas

La descarga de Microsoft Visual Studio 2008 está más mucho más cerca que el lanzamiento oficial del año entrante junto con Microsoft SQL Server 2008 y Microsoft Windows Server 2008 (si los servidores de MSDN nos dejan).

Segun el equipo de MSDN Suscriptions, la misma estará disponible very soon un very soon que se está dilatando bastante según publican en su blog oficial.

La siguiente frase me hace pensar que tal vez los desarrolladores somos demasiado ansiosos y que cuando finalmente nos habilitan un link de descarga, basicamente asesinamos a los servidores

We are using two different platforms to make these downloads available - to improve discoverability and reliability, and to balance demands on the systems

Veremos que tal se comportan las descargas en el very soon future.

 

Saludos @ Home

El Bruno

Posted domingo, 18 de noviembre de 2007 12:26 by elbruno | 1 comment(s)

Filed under: ,

[DSL] Web Service Software Factory: Modeling Edition

Buenas

los productos de Microsoft Patterns and Practices siguen madurando y por fin comenzamos a ver como se comienzan a aprovechar todas las bondades de Visual Studio 2005 para dar pasos más serios en lo que se refiere al trabajo con Software Factories.

Por ejemplo, el nuevo release de Web Service Software Factory: Modeling Edition aprovecha las virtudes de las DSL Tools y por fin podemos tener un visual designer para los mismos.

Esta nueva release esta integrada en Visual Studio utilizando tres DSL Models y trabaja sobre un modelo de Web Domain Services basado en contratos, operaciones, mensajes, etc. Es además extensible como sus antecesores e implementa las mejores prácticas en lo relacionado a seguridad, gestión de excepciones, y demás subjetcs que usualmente se proponen en Microsoft Patterns and Practices.

Realmente aconsejo darle un vistazo

Dentro de MSDN podemos encontrar más información en http://msdn2.microsoft.com/en-us/library/bb931187.aspx

 

Saludos @ Home

El Bruno

Posted domingo, 18 de noviembre de 2007 11:44 by elbruno | 6 comment(s)

[VS2008] Descargalo si puedes

Buenas

se acerca la hora para el esperado lanzamiento del RTM de Microsoft Visual Studio 2008 y ya comenzamos a tener sobrecargas en el MSDN Download Center:

 

¿¿ Será que hay más desarrolladores de lo que parece ??

 

Saludos @ Madrid

El Bruno

Posted viernes, 16 de noviembre de 2007 0:35 by elbruno | 3 comment(s)

Filed under: ,

[LIVE] Control de presencia y traducciones everywhere

Buenas

aquel que piense que dentro de un par de años todavía seguirá tirando líneas y creando aplicaciones desde cero, tiene que repensar ese escenario. Este post no es para disertar sobre SaaS porque no se muy bien que significa la palabra disertar pero si para comentar sobre la gran capacidad de servicios que estan brindando los grandes (Microsoft, Google, HP, etc.); y sobre cómo, nosotros como developers, debemos conocer y aprender a utilizar los mismos.

Un ejemplo concreto es Windows Live; en las últimas semanas han liberado muchas aplicaciones, que a su vez poseen una o varias APIs para ser utilizadas como servicios desde aplicaciones externas, quiero destacar 2 sobre el conjunto completo.

En primer lugar Windows Live Translator, el traductor online de la familia Windows Live. Desde hace 2 días simplemente agregando el siguiente script a tu página ya tienes capacidades de traducción incorporada:

<script type="text/javascript" src=http://translator.live.com/TranslatePageLink.aspx?pl=en></script>

Con muy poco de trabajo y trabajando con los templates de Windows Live Writer puedes lograr que en todos tus posts siempre aparezca la siguiente firma con el link al traductor (siempre que el administrador del blog lo permita):

 

y de esta forma, invirtiendo solo 5 minutos, has agregado multiidioma a tu blog !!!

 

Si además utilizas Windows Live Messenger como una herramienta de trabajo o simplemente para chatear con tus amigos, ahora puedes ampliar un poco más estas capacidades agregando un control de presencia, asociado a tu cuenta en cualquier página html.

Por ejemplo, en la página principal de El Bruno, cuando se visualizan los datos de mi perfil, se muestra además una pequeña imágen con mi estado actual en Windows Live Messenger, si deseas chatear conmigo lo único que necesitas hacer es click en el ícono del messenger y automáticamente se abrira un webchat para poder comenzar a chatear, con una cuenta temporal de MSN Live que por defecto es Visitor.

Nota: esta funcionalidad está en período de pruebas por lo que si veo que se cuela algún bot que me vuelve loco a preguntas, a la caja de los experimentos fallidos.

Además si realmente tienes lo que se necesita, puedes agregar directamente una ventana de chat a tu blog y sufrir con el que pase ocasionalmente por el mismo. Para más información puedes visitar los siguientes links:

 

 

Saludos @ Madrid

El Bruno

Posted miércoles, 14 de noviembre de 2007 11:40 by elbruno | with no comments

[VS2005] Scrum for Team System v2.0 released

Buenas

excelentes noticias por parte de nuestros amigos de Conchango. La nueva versión de su popular Template basado en SCRUM llamado Scrum for Team System v2.0 Standard Edition estará disponible para descargar gratuitamente desde http://www.scrumforteamsystem.com y coindirá con el lanzamiento de Microsoft Visual Studio 2008.

Este nuevo template posee las siguiente features:

Reports

  • Significant performance improvements compared to the v1.1 reports (we recommend you use the Report Installer to upgrade your existing reports to the latest version – see below).
  • Portal Reports are now hidden from Team Explorer. (The hidden reports may be seen by visiting the Report site and selecting “Show Details”)
  • A small “(Hidden) Bug History Chart Small” is available for use in the portal.
  • A “Version” report has been added to aid identification of the version of Scrum for Team System in use.

Windows Sharepoint Services

  • “Quick links” functionality has now been re-introduced.
  • A “bottom zone” has been added to the default template to allow more flexibility in the customisation of the layout of the Portal.
  • The default portal site for a new Team Project now displays the following reports: Sprint Burndown Chart, Product Burndown Chart, Bug History Chart, Product Cumulative Flow
Utilities
  • Report Installer (which is used to upgrade the reports in existing team projects) now has the option to completely refresh the report site for a particular team project with the latest reports (by deleting all existing reports in the Team Project before the new ones are installed). Alternatively, individual reports can be overwritten with the latest versions (for example if you have added custom reports that you wish to keep) and the new ones added.
Process Template
  • No changes since v1.1
Upgrade process from earlier versions

If you are on v1.0 you need to install version 1.2, create a new team project and follow the migration steps to get to v1.2.

If you are on v1.1 you need to install version 1.2, run the Report Installer from the AdminUtilities package to update all reports and then customise the existing portal to get to v1.2.

 

Pues, cuando pueda volver a la oficina, actualizaré mi servidor a esta nueva versión y comentaré un poco más al respecto.

 

Saludos @ Madrid

El Bruno

Posted martes, 13 de noviembre de 2007 13:05 by elbruno | with no comments

[MOSS] Autenticacion utilizando Windows Live ID

   Translate this pageTranslate this page

Buenas

hace un tiempo se anunciaba un posible set de componentes que permitían integrar el modelo de seguridad de Windows Live con MOSS 2007. Desde hace poco tiempo esto ya es una realidad gracias a Keith Bunge.

La versión inicial de este proyecto incluye:

  • Autenticacón soportada con Windows Live ID.
  • Capacidad para resolver una credencial Windows Live ID utilizando una dirección de mail.
    image
    image
  • Grupo "Authenticated Live Users", con un funcionamiento similar al grupo "NT_AUTHORITY\Authenticated Users".
  • Capacidad para bloquear una credencial de WLID o un ingresar la misma a una blacklist.
    image
  • “Windows Live Authentication Setting Sync” Feature a nivel de site collection, que una vez activada, sincronizará la información de Windows Live para todas las site collections que posean esta feature activada.

La solución CKS:WLA está disponible en https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=CKS&ReleaseId=7746.

Fuente: http://blogs.msdn.com/sharepoint/archive/2007/10/15/announcing-community-kit-for-sharepoint-windows-live-authentication.aspx

 

Saludos @ Hospital

El Bruno

Posted lunes, 12 de noviembre de 2007 14:15 by elbruno | 1 comment(s)

[LIVE] no more beta, version final liberada

Buenas

si quieres estar con un café en la mano y tan contento como el no tan chavalin de la foto de Live; deberías saber que hace un par de días se liberó la primera versión de la suite completa de productos Live. Entre ellos hay algunos curiosos (como el Windows Live Photo Gallery Beta), pero como siempre, en mi caso particular el que más utilizo es Windows Live Writer. La última versión esta disponible para descargar desde:

Download Writer 2008
Windows Live Writer 2008 (version 12.0.1366.1026)

Sin embargo la suite completa de productos es más amplia y (según mi punto de vista de usuario) está 100% orientada a la integración con Windows Vista:

  • Windows Live Events
  • Windows Live for Windows Mobile
  • Windows Live Hotmail
  • Windows Live Messenger
  • Windows Live Mail
  • Windows Live OneCare Family Safety
  • Windows Live Photo Gallery
  • Windows Live Spaces
  • Windows Live Writer

Si ya tienes alguno de estos productos y quieres actualizarlo simplemente ve a http://productupload.live.com/ y sigue el paso a paso que te proponen para la instalación ( next next next finish !!! )

 

Saludos !@ TechEd

El Bruno

Posted jueves, 08 de noviembre de 2007 8:24 by elbruno | with no comments

Filed under:

[VS2005] VssConverter.KillServer = True

Buenas

interesante herramienta el VssConverter, además de muy potente. Sin embargo si en el archivo de configuración/settings nos equivocamos y lanzamos un proceso de análisis o migración, podemos "asesinar" un server muy simplemente.

Atención al siguiente archivo de configuración (en especial a la línea nro 9)

1 <?xml version="1.0" encoding="utf-8"?> 2 <SourceControlConverter> 3 <ConverterSpecificSetting> 4 <Source name="VSS"> 5 <VSSDatabase name="c:\VSSDatabase"></VSSDatabase> 6 <UserMap name="c:\Migrate\Usermap.xml"></UserMap> 7 </Source> 8 <ProjectMap> 9 <Project Source="$" Destination="$/"></Project> 10 </ProjectMap> 11 </ConverterSpecificSetting> 12 <Settings> 13 <TeamFoundationServer name="server_name" port="port_number" protocol="protocol"></TeamFoundationServer> 14 </Settings> 15 </SourceControlConverter>

 

Como pueden ver es en esta línea donde se especifica el proyecto de origen en la base de datos de Visual SourceSafe y la ruta de destino para la migración en Team Foundation Server. Al no poner source="$/" (sólo me he olvidado un /) la herramienta se queda en un bucle buscando eternamente directorios sobre si misma (aquí es donde asesinamos al server)

Si queremos migrar todo el contenido de una base de datos de Visual SourceSafe la sentencia correcta es la que uso en el ejemplo a continuación (línea 5):

1 <?xml version="1.0" encoding="utf-8"?> 2 <SourceControlConverter> 3 .. 4 <ProjectMap> 5 <Project Source="$/" Destination="$/"></Project> 6 </ProjectMap> 7 -- 8 </SourceControlConverter>

Ahora ya sabes, si dejas un proceso de migración en marcha, y te tomas 15 min para unas cañas con los amigos una pausa y un café; y cuando llegas ver tu servidor en llamas ... ya sabes por donde puede venir el problema.

 

Saludos !@ TechEd

El Bruno

Posted martes, 06 de noviembre de 2007 23:48 by elbruno | with no comments

[VS2005] Todos los Iconos de Microsoft Office en solo 481 KB !!!

Buenas

menudo problema te puedes encontrar cuando comienzas a extender los Menúes, Toolbars o Ribbons de Visual Studio 2005, Microsoft Visual Studio 2008, Microsoft Office 2007, o alguna otra aplicación; y quieres agregar un ícono personalizado. Existen muchas opciones para agregar estos íconos, pero algunas suelen ser tediosas (especialmente si necesitas llegar a C++ para extender Visual Studio 2005).

Por suerte existe un archivo que posee TODAS LAS REFERENCIAS A LOS IDs DE LA SUITE DE OFFICE. Éste archivo puede encontrarse, una ves instalado el SDK para Visual Studio, en

"..\Program Files\Visual Studio 2005 SDK\2007.02\VisualStudioIntegration\Common\Inc\office10\msobtnid.h"

(del que ya hablé un poco junto con Domain Specific Language Tools en este post)

y, para ahorrarme el trabajo de tener que buscarlo nuevamente, dejo parte de la lista con los más de 7000 íconos que posee internamente:

 

//----------------------------------------------------------------------------- // Copyright 1994-2000 Microsoft Corporation. All Rights Reserved. // // File: msobtnid.h // Contents: This file contains the MSO button icon IDs. //----------------------------------------------------------------------------- #define msotcidUser 32768 // app-custom controls should use tcid >= msotcidUser #define msotcidNil 0 //(0,25) Label: '&Nil' #define msotcidCustom 1 //(0,25) Label: '&Custom' #define msotcidSpelling 2 //(1,5) Label: '&Spelling...' #define msotcidSave 3 //(1,0) Label: '&Save' #define msotcidPrint 4 //(1,3) Label: '&Print...' #define msotcidWholePage 5 //(19,20) Label: '&One Page' #define msotcidPageWidth 6 //(21,12) Label: '&Fit To Window' #define msotcidZoom100 7 //(21,13) Label: '&Zoom 100%' #define msotcidTable 8 //(1,14) Label: '&Insert Table...' #define msotcidColumns 9 //(1,16) Label: '&Columns...' #define msotcidFrame 10 //(25,7) Label: '&Frame' #define msotcidNumbering 11 //(0,26) Label: '&Numbering' #define msotcidBullets 12 //(0,27) Label: '&Bullets' #define msotcidPortraitLandscape 13 //(18,22) Label: '&Portrait/Landscape' #define msotcidOutdent 14 //(0,28) Label: '&Decrease Indent' #define msotcidIndent 15 //(0,29) Label: '&Increase Indent' #define msotcidInsertDrawing 16 //(1,24) Label: '&Insert Drawing' #define msotcidGraph 17 //(1,23) Label: 'C&hart' #define msotcidNew 18 //(0,11) Label: '&New...' #define msotcidCopy 19 //(1,7) Label: '&Copy' #define msotcidUndo2 20 //(48,2) Label: '&Undo' #define msotcidCut 21 //(1,6) Label: 'Cu&t' #define msotcidPaste 22 //(1,8) Label: '&Paste' #define msotcidOpen 23 //(0,10) Label: '&Open...' #define msotcidEnvelope 24 //(25,26) Label: '&Envelope' #define msotcidZoom 25 //(34,20) Label: '&Zoom' #define msotcidEquation 26 //(4,11) Label: '&Equation Editor' #define msotcidMicrophone 27 //(37,14) Label: '&Custom' #define msotcidPageView2 28 //(56,25) Label: '&Page View' #define msotcidBacktrack 29 //(25,6) Label: '&Custom' #define msotcidBrush 30 //(27,20) Label: '&Pen Comment' #define msotcidPencil 31 //(59,9) Label: '&Custom' #define msotcidFolder 32 //(27,16) Label: '&Custom' #define msotcidClock 33 //(28,6) Label: '&Custom' #define msotcidPasteJar 34 //(27,25) Label: '&Custom' #define msotcidArrowToolbar 35 //(11,19) Label: '&Custom' #define msotcidICantIdentifyIt 36 //(26,14) Label: '&Custom' #define msotcidRepeat 37 //(4,14) Label: '&Repeat' #define msotcidUpArrow2 38 //(43,18) Label: '&Custom' #define msotcidRightArrow2 39 //(26,6) Label: '&Custom' #define msotcidDownArrow2 40 //(26,7) Label: '&Custom' #define msotcidLeftArrow2 41 //(26,10) Label: '&Custom' #define msotcidWord 42 //(37,23) Label: '&Microsoft Word' #define msotcidUse_msotcidFlowchart_Instead 43 //(47,12) Label: '&Custom' #define msotcidArrowAndPage 44 //(26,8) Label: '&Custom' #define msotcidUse_msotcidMail_Instead 45 //(26,9) Label: '&Custom' #define msotcidUse_msotcidFind_Instead 46 //(4,16) Label: '&Custom' #define msotcidClear 47 //(17,9) Label: 'Cle&ar' #define msotcidUse_msotcidWatch_Instead 48 //(39,28) Label: '&Custom' #define msotcidQuestion 49 //(23,18) Label: '&Custom' #define msotcidUse_msotcidCalculator_Instead 50 //(13,22) Label: '&Custom' #define msotcidBreakpoint 51 //(13,23) Label: '&Breakpoint' #define msotcidPiggy 52 //(25,5) Label: '&Piggy Bank' #define msotcidPaperStack 53 //(36,20) Label: '&Custom' #define msotcidSingleSpacing 54 //(34,5) Label: '&Single Spacing' #define msotcidOneAndAHalfSpacing 55 //(13,4) Label: '&1.5 Spacing' #define msotcidDoubleSpacing 56 //(15,16) Label: '&Double Spacing' #define msotcidSuperscript 57 //(54,25) Label: '&Superscript' #define msotcidSubscript 58 //(4,3) Label: '&Subscript' #define msotcidHappyFace 59 //(7,23) Label: '&Happy Face!' #define msotcidDoubleUnderline 60 //(13,3) Label: '&Double Underline' #define msotcidWordUnderline 61 //(13,2) Label: '&Word Underline' #define msotcidGrowFont2 62 //(13,1) Label: '&Grow Font' #define msotcidShrinkFont2 63 //(13,17) Label: '&Shrink Font' #define msotcidKeyboard 64 //(13,18) Label: '&Custom' #define msotcidDialog2 65 //(27,24) Label: '&Dialog Box' #define msotcidUse_msotcidExcel_Instead 66 //(46,7) Label: '&Custom' #define msotcidTrashCan 67 //(37,6) Label: '&Custom' #define msotcidSpeaker 68 //(37,12) Label: '&Custom' #define msotcidScreen 69 //(28,11) Label: '&Custom' #define msotcid0 70 //(44,24) Label: '&Number 0' #define msotcid1 71 //(36,13) Label: 'Show Heading &1' #define msotcid2 72 //(36,16) Label: 'Show Heading &2' #define msotcid3 73 //(36,11) Label: 'Show Heading &3' #define msotcid4 74 //(36,10) Label: 'Show Heading &4' #define msotcid5 75 //(44,0) Label: 'Show Heading &5' #define msotcid6 76 //(44,13) Label: 'Show Heading &6' #define msotcid7 77 //(19,9) Label: 'Show Heading &7' #define msotcid8 78 //(43,23) Label: 'Show Heading &8' #define msotcid9 79 //(43,28) Label: 'Show Heading &9' #define msotcidA 80 //(48,27) Label: '&Letter A' #define msotcidB 81 //(48,28) Label: '&Letter B' #define msotcidC 82 //(48,29) Label: '&Letter C' #define msotcidD 83 //(49,0) Label: '&Letter D' #define msotcidE 84 //(49,1) Label: '&Letter E' #define msotcidF 85 //(49,2) Label: '&Letter F' #define msotcidG 86 //(49,3) Label: '&Letter G' #define msotcidH 87 //(49,4) Label: '&Letter H' #define msotcidI 88 //(49,5) Label: '&Letter I' #define msotcidJ 89 //(49,6) Label: '&Letter J' #define msotcidK 90 //(49,7) Label: '&Letter K' #define msotcidL 91 //(49,8) Label: '&Letter L' #define msotcidM 92 //(49,9) Label: '&Letter M' #define msotcidN 93 //(49,10) Label: '&Letter N' #define msotcidO 94 //(49,11) Label: '&Letter O' #define msotcidP 95 //(49,12) Label: '&Letter P' #define msotcidQ 96 //(49,13) Label: '&Letter Q' #define msotcidR 97 //(49,14) Label: '&Letter R' #define msotcidS 98 //(49,15) Label: '&Letter S' #define msotcidT 99 //(49,16) Label: '&Letter T' #define msotcidU 100 //(49,17) Label: '&Letter U' #define msotcidV 101 //(49,18) Label: '&Letter V' #define msotcidW 102 //(49,19) Label: '&Letter W' #define msotcidX 103 //(49,20) Label: '&Letter X' #define msotcidY 104 //(49,21) Label: '&Letter Y' #define msotcidZ 105 //(56,10) Label: '&Letter Z' #define msotcidClose 106 //(7,24) Label: '&Close' #define msotcidTableAutoFormat 107 //(6,28) Label: 'Table Auto&Format...' #define msotcidFormatPainter 108 //(1,9) Label: '&Format Painter' #define msotcidPrintPreview 109 //(1,4) Label: 'Print Pre&view' #define msotcidCopyFormat 110 //(36,17) Label: '&Pick Up Style' #define msotcidPasteFormat 111 //(28,22) Label: '&Apply Style' #define msotcidBlank 112 //(39,16) Label: '&Custom' #define msotcidBold 113 //(0,20) Label: '&Bold' #define msotcidItalic 114 //(0,21) Label: '&Italic' #define msotcidUnderline 115 //(0,22) Label: '&Underline' #define msotcidGridBorder2 116 //(37,7) Label: '&Custom' #define msotcidBottomBorder2 117 //(54,22) Label: '&Custom' #define msotcidDarkShading2 118 //(27,15) Label: '&Dark Shading' #define msotcidParagraphMark 119 //(3,14) Label: '&Show All' #define msotcidLeftJustify 120 //(0,23) Label: 'Align &Left' #define msotcidRightJustify 121 //(1,18) Label: 'Align &Right' #define msotcidCentered 122 //(0,24) Label: '&Center' #define msotcidFullJustify 123 //(2,28) Label: '&Justify' #define msotcidContextHelp 124 //(14,29) Label: 'What's &This?' #define msotcidDate 125 //(24,23) Label: '&Date' #define msotcidTime 126 //(28,4) Label: '&Time' #define msotcidPageNumbers 127 //(7,26) Label: 'Page N&umbers...' #define msotcidUndo 128 //(1,10) Label: '&Undo' #define msotcidRedo 129 //(1,11) Label: '&Redo' #define msotcidLine 130 //(2,7) Label: '&Line' #define msotcidRectangle 131 //(37,26) Label: 'R&ectangle' #define msotcidLeftArrow 132 //(56,7) Label: '&Promote' #define msotcidRightArrow 133 //(60,26) Label: '&Demote' #define msotcidUpArrow 134 //(24,16) Label: 'Move &Up' #define msotcidDownArrow 135 //(12,12) Label: '&Move Down' #define msotcidDoubleRightArrow 136 //(13,20) Label: 'Demote to &Body Text' #define msotcidExpand2 137 //(47,14) Label: '&Expand' #define