[VS4Mac] Lottie Player, nuevo addin para previsualizar animaciones Lottie

Introducción

¿Te imaginas tomar una animación creada por un diseñador y poder utilizarla?.

Lottiees una librería de animaciones creada por Airbnb para iOS y Android que se encarga de tomar animaciones de After Effect exportadas en JSON y renderizarla utilizando APIs de animación nativa en cada plataforma.

Lottie

Las animaciones pueden ser extremadamente complejas pero al final, trabajamos con archivos de imagen y JSONs lo que se traduce en un requisito pequeño en tamaño otorgando unas posibilidades altas. Las animaciones se pueden reproducir, pausar, detener, jugar con la velocidad o cambiar la escala.

Lottie Player

Usar animaciones de Lottie y acabar lanzando la App en depuración o usando herramientas externas para ver el resultado no es lo idóneo, ¿verdad?. Lottie Playeres un addin para Visual Studio para macOS que permite previsualizar (e interactuar) con la animación directamente desde el IDE.

¿Cómo instalar?

Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…

Buscamos por «Lottie Player»:

Instalar Lottie Player…

Y pulsamos Install…

¿Qué aporta?

Podremos hacer clic derecho sobre un archivo de animación Lottie (recuerda, formato Json) y acceder a una nueva opción, Preview In Lottie Player…

Lottie Player

Seleccionando la opción, previsualizaremos la animación en bucle además de:

  • Poder pausar y reanudar la animación en cualquier momento.
  • Si pausamos la animación, podremos movernos hacia cualquier frame de la animación.

Veamos el addin en funcionamiento:

Preview in Lottie Player

Lo próximo

La versión actual aporta la funcionalidad básica pero hay una gran cantidad de opciones posibles para futuras versiones:

  • Controlar la velocidad de la animación.
  • Controlar si se reproduce o no en bucle.
  • Poder cambiar el fondo de la animación.
  • Etc.

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!

Más información

[VS4Mac] Git History integrado como addin

Introducción

A la hora de trabajar con un proyecto en Git, Visual Studio para macOS cuenta con soporte integrado. Sin embargo, recientemente probé git-history. Sin duda, una forma intuitiva y muy interesante para ver le historial de cambios en un archivo. Así que, ¿por qué no tenerlo integrado en Visual Studio para macOS?.

Git History

Git History llega como addin para Visual Studio para macOS como una forma alternativa sencilla y rápida de ver el historial de cambios de un fichero.

¿Cómo instalar?

Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…

Buscamos por «Git History».

Instalar…

Y pulsamos Install…

¿Qué aporta?

Haciendo clic derecho sobre cualquier archivo de un proyecto que use Git tendremos una nueva opción:

Show Git History

Lo que nos abrirá una nueva vista con el historial del archivo:

Viendo el historial del archivo

Veamos como usar el addin directamente:

Usando Git History

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!

Más información

[VS4Mac] Nuevo addin para lanzar el terminal

Introducción

Tarde o temprano, el terminal acaba siendo un gran aliado. Hacer push en git, acceder a un archivo, ejecutar un script, etc. Las posibilidades son muy variadas.

Open Terminal

Open Terminales un addin para Visual Studio para macOS que permite abrir el terminal directamente desde el IDE de forma rápida y sencilla.

¿Cómo instalar?

Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…

Buscamos por «Open Terminal»:

Instalar

Y pulsamos Install…

¿Qué aporta?

Poder abrir el terminal desde el IDE directamente. Podemos hacer clic derecho sobre cualquier proyecto o carpeta para abrir el terminal estando ya en dicha carpeta:

Usando una ruta específica

De modo que, tendremos el terminal abierto con la carpeta seleccionada prepara directamente para ejecutar comandos!.

Terminal

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!

Más información

[VS4Mac] Samples Importer, acceder a ejemplos nunca fue más fácil

Introducción

A la hora de aprender un lenguaje o framework es ideal contar con una buena documentación, pero, contar con ejemplos complementarios es aún mejor si cabe. Poder ver el código, modificarlo y probar los resultados. Gran parte de la documentación Xamarin cuenta con ejemplos oficiales asociados disponibles en GitHub.  ¿Y si pudiésemos acceder a los ejemplos de forma aún más sencilla?.

Samples Importer

Llega Samples Importer, un nuevo addin para Visual Studio para macOS, que permite acceder a ejemplos oficiales de:

  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms
  • Xamarin.Mac

Pudiendo ver la información básica de cada ejemplo (título, descripción, plataformas, tags, etc.), filtrar y directamente descargar además de abrir el ejemplo directamente desde el IDE.

¿Cómo instalar?

Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…

Buscamos por “Samples Importer”:

Instalar Samples Importer

Y pulsamos Install…

Tras instalar, lo primero que debemos hacer es configurar el addin. Samples Importer obtiene toda la información de cada ejemplo (así como el código del mismo) desde GitHub con el firme objetivo de ofrecer siempre el ejemplo actualizado a la última. Para ello, es necesario añadir un Personal Access Token en la configuración de Visual Studio:

Configurar el addin

NOTA: Los ejemplos se descargarán automáticamente a una ruta temporal. Sin embargo, es posible elegir una ruta específica en la configuración del addin.

¿Qué aporta?

Desde el menu Tools tenemos acceso a una nueva opción Samples Importer. Tenemos acceso a un nuevo dialogo donde podemos acceder a los ejemplos oficiales de Xamarin (Android, iOS, Xamarin.Forms, macOS). Acceder a un ejemplo, para ver el código y probar es tan sencillo como seleccionar y pulsar el botón Continue:

Usando el addin

Tras pulsar el botón, se descargará el ejemplo seleccionado a la carpeta establecida en la configuración del addin (se utiliza una carpeta temporal en caso de no establecer ninguna carpeta específica).

A continuación, una serie de capturas del addin con diferentes ejemplos:

Lo próximo

Para la próxima versión del addin se incluirán las siguientes mejoras:

  • En la actual versión se buscan ejemplos directamente de las carpetas de repositorios oficiales de ejemplos Xamarin. Sin embargo, la búsqueda se realiza en las carpetas de primer nivel. Existen carpetas con subcarpetas con más ejemplos. Se añadirá una búsqueda en profundidad.
  • Cache. Se incluirá una cache de ejemplos de modo que si, no hay cambios en el repositorio, se utilizará la cache y se evitará la carga haciendo peticiones a GitHub.
  • Se añadirá una opción para cargar ejemplos de la comunidad.

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!

Más información

[VS4Mac] Asset Studio, addin para la gestión de recursos

Introducción

A la hora de trabajar con nuestros proyectos, contamos con imágenes. A veces serán recursos para la gestión del icono de la aplicación, otras serán recursos a utilizar en la aplicación. En cualquier caso, necesitamos gestionar una serie de acciones:

  • Cuidar el tamaño de las imágenes. Tener un set de imágenes optimizadas es fundamental para garantizar el correcto funcionamiento de la aplicación cuidando el consumo de memoria.
  • Generar la misma imagen en diferentes tamaños. Redimensionar una imagen o crear diferentes imágenes con diferentes tamaños para crear el icono de una aplicación móvil.
  • Ver listado de imágenes usadas (y cuales no), copiar y mover imágenes entre proyectos, etc.

Asset Studio

Asset Studio llega como un addin para Visual Studio para macOS para ofrecer diferentes opciones relacionadas con el tratamiento y gestión de imágenes.

¿Cómo instalar?

Para instalar el addin, en Visual Studio para macOS, accedemos al menu principal y seleccionamos Extensions…

Buscamos por «Asset Studio»:

Instalar Asset Studio

Y pulsamos Install…

¿Qué aporta?

Actualmente, esta primera versión del addin se centra en optimizar las imágenes. Podemos seleccionar una imagen específica, y al hacer clic derecho tendremos la opción

Optimize Image

Tras pulsar la opción, aparecerá un dialogo donde veremos la información básica de la imagen (previsualización, tamaño, peso y nombre) y podremos optimizarla.

Optimizar imagen

Si hacemos clic derecho sobre una carpeta en lugar de una imagen, se buscarán todas las imágenes que contiene la carpeta (y sus subcarpetas).

Optimize Images

Veremos un listado con todas las imágenes con su información básica (nombre y tamaño):

Optimizar imágenes

Veámoslo en funcionamiento:

Optimizar imágenes

Para optimizar las imágenes se utiliza la API de TinyPNG que requiere un API Key para funcionar. Para añadir el API Key se debe acceder a las preferencias de Visual Studio, opción Other > Asset Studio:

API Key

NOTA: Desde las opción de configuración del addin se encontrará un enlace para crear un API Key.

Lo próximo

Para las próximas versiones, se incluirá un gestor de imágenes junto con una opción para generar los iconos necesarios para Android e iOS en diferentes tamaños partiendo desde una imagen.

Crear iconos para iOS y Android

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Recuerda, puedes dejar un comentario directamente en la entrada!

Más información

[VS4Mac] Sweeper, addin para limpiar carpetas output

Introducción

En ocasiones, necesitamos borrar las carpetas de salida (bin y obj) y puede llegar a ser un proceso tedioso y manual sobretodo en caso de contar con muchos proyectos en la solución.

Sweeper

Sweeper llega en forma de addin para Visual Studio para macOS para facilitar el borrado de carpetas bin y obj además de otras carpetas importantes.

¿Cómo instalar?

Accedemos al menu principal de Visual Studio y seleccionamos Extensions…

Buscamos por «Sweeper»:

Instalar Sweeper

Pulsamos Install…

¿Qué aporta?

Con una solución abierta, podemos hacer clic derecho sobre la solución o un proyecto específico y veremos:

Menu

El addin incluye dos opciones extras:

  • Clean /bin and /obj Directories: Limpia las carpetas bin y obj. Al seleccionar una solución limpiará los directorios de salida de cada proyecto.
  • Clean /packages Directory: Limpia la carpeta de paquetes NuGet.

NOTA: Al recompilar la solución se volverán a descargar los paquetes NuGet.

Lo próximo

Para próximas versiones hay ya planeadas nuevas opciones como:

  • Comprimir un proyecto.
  • limpiar y comprimir un proyecto.
  • Comprimir la salida de un proyecto.

¿Qué te parece el addin?, ¿qué te gustaría añadir?. Recuerda, cualquier comentario es bienvenido en la entrada!.

Más información

[VS4Mac] Color Helper, addin con herramientas para trabajar con colores

Introducción

A la hora de desarrollar y crear aplicaciones (móviles, web, escritorio, etc.) trabajamos de forma habitual con colores. La diversidad de formatos o y la necesidad de contar con una serie de colores que compongan una buena paleta nos suelen llevar a buscar herramientas para realizar conversión entre formatos o buscar colores análogos, complementarios, etc.

Color Helper

Color Helper llega en formato de addin para Visual Studio para macOS con el objetivo de contar directamente en el IDE con las herramientas necesarias para convertir colores entre diferentes formatos o buscar esos colores que hagan que la aplicación luzca mejor.

Color Helper

¿Cómo instalar?

Para instalar el addin, accedemos al menu principal de Visual Studio y seleccionamos la opción Extensions… 

Buscamos por «Color Helper»:

Instalar Color Helper

Y pulsamos Install…

¿Qué aporta?

Tras instalar el addin, tendremos dos bloques de funcionalidad diferente.

Por un lado, tenemos un nuevo Pad en Visual Studio llamado Color Converter.

Acceder a Color Converter

Se nos abrirá un nuevo panel lateral:

Color Converter

La idea es tener una opción rápida y directa para poder hacer conversión entre formatosde colores. Actualmente se soporta RGB y Hex.

La otra opción incluida en el addin es Color Blender. La idea es tener algo similar a www.colorblender.comdirectamente en el IDE. Permite utilizar diferentes algoritmos para ver colores análogos, complementarios, etc.

Color Blender

Se utiliza la librería Color Blendercreada por Wiesław Šoltés.

Lo próximo

Hay una gran cantidad de nueva funcionalidad en el Roadmap del addin:

  • Añadir más formatos a la conversión entre colores: HSL, HSV, CMYK.
  • Añadir colores similares en el menu lateral de conversión de colores.

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?. Puedes dejar cualquier pregunta o comentario directamente en la entrada!.

Más información

[VS4Mac] Text Generator, addin para generar texto

Introducción

Creando datos de pruebas para la UI, servicios Fake, etc. solemos tirar de herramientas que generen Dummy Text (Loren ipsum y la gran variedad de variantes).

Text Generator

Text Generatores un addin para Visual Studio para macOS que nos permitirá generar texto directamente desde el IDE.

Generar texto

¿Cómo instalar?

Accedemos al menu principal de Visual Studio y seleccionamos la opción Extensions…

A continuación, buscamos «Text Generator».

Instalar Text Generator

Y pulsamos Install…

¿Qué aporta?

Al tener un proyecto abierto y un archivo de código, tendremos una nueva opción en el menu Edit.

Generar palabras

Al elegir la opción Generate words… aparecerá un dialogo donde introducir el número de palabras a generar.

Lo próximo

Actualmente (v0.1) sólo se permite generar un número determinado de palabras usando «Loren ipsum». Para la próxima versión:

  • Menu contextual desde el editor de código.
  • Permitir elegir si generar caracteres, palabras o párrafos.
  • Permitir elegir entre diferentes proveedores para generar el texto. Jeffsum.NETde James Montemagno será una de las opciones añadidas.

Puedes encontrar el código del addin en GitHub:

Ver GitHub

 

Más información

[VS4Mac] SkiaSharp Fiddle

Introducción

SkiaSharpes un sistema de gráficos 2D para .NET y C# que utiliza el motor de gráficos de código abierto Skia usado en los productos de Google. Recientemente, Matthew Leibowitz creo una herramienta llamada SkiaSharpFiddle. Se trata de una herramienta para Windows que permite ver cambios en código SkiaSharp al vuelo ademas de tener resultados de compilación. Fantástica!.

SkiaSharpFiddle

Tras probarla y hablar con Matthew, seria genial tener la herramienta también en macOS, ¿cierto?.

SkiaSharp Fiddle

Llega a Visual Studio para macOS un nuevo addin que añade SkiaSharp Fiddle integrado en Visual Studio.

addin SkiaSharp Fiddle para VS4Mac

¿Cómo instalar?

Para instalar el addin, accedemos al menu principal de Visual Studio y elegimos la opción Extensions…

Buscamos por «SkiaSharp»y encontramos SkiaSharp Fiddle:

Instalar SkiaSharp Fiddle

Tras pulsar Install…, tendremos el addin instalado.

¿Qué aporta?

la principal ventaja del addin es poder previsualizar al vuelo, de forma inmediata código de SkiaSharp. La herramienta es ideal para crear y prototipar al trabajar con SkiaSharp. Además:

  • Podemos personalizar la superfie de dibujado (ancho y alto).
  • Realmente compilamos el código, en caso de error tenemos visualización directa de la línea donde hay error (o errores) junto con el mensaje de error.

Para acceder a la herramienta basta con acceder al menu Tools y seleccionar SkiaSharp Fiddle.

¿Cómo la utilizo?

Lo próximo

Estamos ante la primera versión (v0.1) con la funcionalidad básica.

¿Qué hay pensado para la próxima versión?.

La principal novedad que se incluirá en la próxima versión es IntelliSenseen el editor de código. Recibir ayuda a la hora de escribir el código autocompletado y facilitando la escritura. Además se añadirá elección de modo de color y se realizarán correcciones a errores o feedback recibido.

Puedes encontrar el código del addin en GitHub:

Ver GitHub

¿Qué te parece el addin?, ¿qué añadiríais (o quitarías)?. Recuerda, puedes dejar comentarios directamente en la entrada!

Más información

[Xamarin.Forms] Addins y extensiones para Visual Studio macOS y Windows

Introducción

Visual Studio para macOS y Windows cuentan con modelos de extensión diferentes, modelos para crear interfaces de usuario diferentes y habitualmente trasladar un addin de macOS a una extension en Windows o viceversa, es costoso. ¿Podemos simplificar el proceso?, ¿podemos lograr compartir más elementos?.

En este artículo, vamos a ver como crear addins para Visual Studio macOS así como extensiones para Visual Studio Windows utilizando Xamarin.Forms para lograr compartir la UI.

Utilizaremos Measurer4000, herramienta diseñada para obtener métricas de código compartido en proyectos Xamarin. Nuestro objetivo será añadir la herramienta dentro de Visual Studio.

Add-ins para Visual Studio macOS

La arquitectura de Visual Studio para macOS es extensible. La forma de extender se basa en rutas de extensión que permiten que terceros extiendan el comportamiento. Por ejemplo: para extender la zona de edición de código, se expone /MonoDevelop/SourceEditor2/ContextMenu/Editor permitiendo añadir nuevos comandos en el menu contextual al hacer clic derecho.

AddIn Maker es un proyecto Open Source creado por Mikayla Hutchinson que permite el desarrollo y la depuración de add-ins para Visual Studio macOS desde Visual Studio macOS.

Para la gestión de la interfaz de usuario se utiliza GTK# o XWT.

Extensiones para Visual Studio Windows

En Windows tenemos la posibilidad de extender practicamente cualquier parte: menús, barras de herramientas, ventanas, etc.

Para crear extensiones se deben instalar las opciones de Desarrollo de extensiones de Visual Studio.

Extensiones en Windows

Para crear extensiones contamos con una plantilla de proyecto VSIX vacía que puede usar junto con las nuevas plantillas de elemento que crean extensiones de editor, ventanas de herramientas y comandos de menú.

Para la definición de la UI, utilizamos WPF.

Xamarin.Forms

Con la llegada de Xamarin.Forms 3.0 encontramos soporte a Linux gracias a un nuevo backend basado en GTK# además de un backend WPF.

Por lo que si usamos GTK# y WPF, ¿podríamos usar XAML y Xamarin.Forms para definir la UI de add-ins para Visual Studio tanto para macOS como para Windows?, ¿podría ser compartida?.

El proyecto en macOS

Comenzamos creando un proyecto de tipo IDE Extension:

IDE Extension

Este proyecto ya cuenta con la referencia a MonoDevelop.Addins. Continuamos añadiendo el paquete NuGet de Xamarin.Forms y Xamarin.Forms.Platform.GTK.

Para trabajar con Xamarin.Forms, debemos realizar la inicialización. La mejor opción para realizar esta tarea es realizarla nada más se abra el IDE. Para ello, vamos a crear un comando:

public class InitXamarinFormsCommand : CommandHandler
{
     protected override void Run()
     {
          Forms.Init();
     }
}

Y modificaremos el archivo Manifiest.addin.xml para añadir nuestro comando como punto de extensión en el arranque del IDE.

<Extension path="/MonoDevelop/Ide/StartupHandlers">
     <Class class="Measurer4000.Addin.Mac.Commands.InitXamarinFormsCommand"/>
</Extension>

Llega la hora de extender.

Añadimos otro punto de extensión:

<Extension path = "/MonoDevelop/Ide/MainMenu/Tools">
     <CommandItem id="Measurer4000.Addin.Mac.Commands.MeasurerCommand"/>
</Extension>

Fíjate que en esta ocasión, añadiremos un nuevo comando en el menu principal, opción herramientas.

Veamos la definición del comando:

public class MeasurerCommand : CommandHandler
{
     protected override void Update(CommandInfo info)
     {
          info.Visible = true;

          var projects = IdeApp.Workspace.GetAllProjects();

          if (projects.Any())
               info.Enabled = true;
          else
               info.Enabled = false;
     }

     protected override void Run()
     {
          new MeasurerWindow().Show();
     }
}

Comenzamos utilizando IdeApp. La clase estática MonoDevelop.Ide.IdeApp es su punto de entrada de extension de Visual Studio. Expone Workbench, Workspace, múltiples servicios  así como métodos relacionados con el ciclo de vida del IDE.

Habitualmente, la clase IdeApp se utiliza para acceder a Workbench o a Workspace. IdeApp.Wortkspace se usa para acceder al estado general del Ide durante una sesión de usuario. Podemos abrir nuevos proyectos y documentos, detectar archivos abiertos y mucho más.

En nuestro caso, lo utilizamos para detectar si el usuario tiene abierto al menos un proyecto.

En caso de abrir un proyecto, habilitamos la opción.

Al ejecutar el comando lanzamos una ventana llamada MeasurerWindow.

public class MeasurerWindow: Gtk.Window
{
     public MeasurerWindow()
     : base(Gtk.WindowType.Toplevel)
     {
          Title = "Measurer4000";
          WindowPosition = Gtk.WindowPosition.Center;

          var page = new MeasurerView();

          Add(page.CreateContainer());

          SetSizeRequest(800, 480);
     }
}

Es una ventana realizada con Gtk cuyo contenido utilizará una ContentPage de Xamarin.Forms. La clave para utilizar Xamarin.Forms es embeber el contenido. Tenemos disponible el método de extensión CreateContainer de Xamarin.Forms en el backend GTK para obtener la ContentPage como contenido nativo.

El proyecto en Windows

Comenzamos el proyecto en Windows añadiendo un comando.

Nuevo comando

Los menús y las barras de herramientas son la forma en que los usuarios acceden a los comandos en el VSPackage. Los comandos son funciones que realizan tareas, como mostrar una ventana o crear un nuevo archivo. Los menús y barras de herramientas son formas gráficas convenientes para presentar los comandos a los usuarios.

En este comando realizamos la inicializacion de Xamarin.Forms:

public static void Initialize(Package package)
{
     Instance = new MeasurerCommand(package);

     Forms.Init();
}

Al ejecutar el comando:

private void MenuItemCallback(object sender, EventArgs e)
{
     var measurerWindow = new MeasurerWindow();

     var measurerContent = new MeasurerView().ToFrameworkElement();
     measurerWindow.Content = measurerContent;

     measurerWindow.Show();
}

Lanzamos una ventana llamada MeasurerWindow (al igual que ya hacíamos en macOS), ventana WPF cuyo contenido es una ContentPage de Xamarin.Forms. La clave para utilizar Xamarin.Forms es de nuevo embeber el contenido. Tenemos disponible el método de extensión ToFrameworkElement de Xamarin.Forms en el backend WPF para obtener la ContentPage como contenido nativo.

La ventana:

<Window 
     x:Class="Measurer4000.Addin.Windows.Windows.MeasurerWindow"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     mc:Ignorable="d"
     WindowStartupLocation="CenterScreen"
     Title="Measurer 4000">
     <Grid>

     </Grid>
</Window>

UI XAML compartida

Tanto en macOS como en Windows utilizamos una ContentPage para definir la interfaz de usuario. Hablamos de una interfaz definida en XAML que puede ser compartida en macOS y Windows, donde en cada plataforma, se utilizará un backend diferente para renderizar la UI con GTK# en el caso de macOS y con WPF en el caso de Windows.

<Grid>
     <Grid.RowDefinitions>
          <RowDefinition Height="Auto" />
          <RowDefinition Height="*" />
          <RowDefinition Height="Auto" />
     </Grid.RowDefinitions>
     <Grid Grid.Row="0"
          Margin="24">
          <Grid.ColumnDefinitions>
               <ColumnDefinition />
               <ColumnDefinition />
               <ColumnDefinition />
          </Grid.ColumnDefinitions>
          <StackLayout Grid.Column="0">
          <StackLayout Orientation="Vertical"
               HorizontalOptions="Center"
               Margin="0, 24, 0, 0">
               <Label Text="iOS Specific Code" />
               <Label Text="{Binding Stats.iOSSpecificCode}"
                    FontSize="30" />
          </StackLayout>
          <StackLayout Orientation="Vertical"
               HorizontalOptions="Center"
               Margin="0, 24, 0, 0">
               <Label Text="Share code in iOS" />
               <Label Text="{Binding Stats.ShareCodeIniOS}"
                    FontSize="30" />
          </StackLayout>
     </StackLayout>
     ...

En la interfaz utilizaremos algunos Labels donde msotrar información con cantidad de líneas así como porcentajes de código compartido y código específico. Por otro lado, utilizamos Oxyplot para mostrar gráficos de tipo tarta.

public MeasurerView()
{
     InitializeComponent();

     BindingContext = new CustomMainViewModel();
}

Toda la lógica del addin, modelos, ViewModels, etc. es la ya existente en la herramienta. Utilizaremos MVVM de exactamente la misma forma utilizada para crear Apps, en nuestro addin. En la ViewModel es necesario pasar la ruta de la solución para que pueda analizar y obtener toda la información.

En macOS tenemos en IdeApp.Workspace lo necesario para obtener la información necesaria de la solución con la que trabaja el usuario. Podemos obtener el listado de soluciones con el metodo GetAllSolutions.

var solutionPath = Path.Combine(Directory.GetCurrentDirectory(), solution.FileName);
_viewModel.MeasureSolutionByPath(solutionPath);

En el caso de Windows, obtenemos la instancia del objeto DTE (Development Tools Environment). DTE representa el entorno de desarrollo integrado (IDE) de Visual Studio y es el objeto de máximo nivel en la jerarquía. Nos otorga acceso a una gran variedad de propiedad y métodos para obtener información de la solución, propiedades, ventanas, etc.

var solution = ((DTE)ServiceProvider.GlobalProvider.GetService(typeof(DTE))).Solution;
var solutionPath = solution.FullName;
_viewModel.MeasureSolutionByPath(solutionPath);

Accedemos a la solución, y extraemos la ruta a la misma.

El resultado en macOS:

Addin en macOS

Y en Windows:

Addin en Windows

¿Qué te parece?. Quizás en un futuro sea una opción a la hora de extender Visual Studio. Ahora que tenemos el IDE en más de un sistema operativo, es hora de pensar en contar con una opción para crear extensiones que compartan la mayor cantidad de código posible.

Más información