Categoría: cosas técnicas

Posts relacionados con la programación o manejo o configuración de los oredenadores (computadores)

  • Mejorar el rendimiento al usar GetExecutingAssembly

    Pues eso… ya te lo comenté hace unos meses, aunque estaba escondido en las novedades de gsNotasNET.Android v2.0.0.33, y era porque me daba error (sin avisar, para más señas) a la hora de usar la forma recomendada de usar Assembly.GetExecutingAssembly.

    En esa ocasión me daba error la aplicación de Xamarin.Forms y sin saber porqué… Pero la he vuelto a probar y por ahora, al menos en el IDE de Visual Studio 2019 va bien.
    De todas formas, ya sabes si usas lo que te voy a explicar aquí, y ves que la aplicación casca, ya sabes porqué es.

    La documentación (en inglés) dice esto:

    For performance reasons, you should call this method only when you do not know at design time what assembly is currently executing. The recommended way to retrieve an Assembly object that represents the current assembly is to use the Type.Assembly property of a type found in the assembly.

    Que en el idioma actualizado de Cervantes viene a decir esto (según Google Translator):

    Por motivos de rendimiento, debe llamar a este método solo cuando no sepa en tiempo de diseño qué ensamblado se está ejecutando actualmente. La forma recomendada de recuperar un objeto Ensamblado que representa el ensamblado actual es usar la propiedad Type.Assembly de un tipo que se encuentra en el ensamblado.

    Aquí te voy a poner el código (tanto de Visual Basic como de C#) para usar esta forma recomendada de asignar un ensamblado (de la clase System.Reflection.Assembly).

    Este código está en bibliotecas (proyectos del tipo Class Library) para usar con .NET Standard 2.0 (de esta forma los ensamblados se podrán usar tanto en .NET Core como en .NET Framework).

    Ejemplo para C#

    public static string VersionDLL()
    {
        var ensamblado = typeof(AboutViewModel).Assembly;
        var fvi = FileVersionInfo.GetVersionInfo(ensamblado.Location);
        // FileDescription en realidad muestra (o eso parece) lo mismo de ProductName
        var s = $"{fvi.ProductName} v{fvi.ProductVersion} ({fvi.FileVersion})" + 
            $"\r\n{fvi.Comments}";
    
        return s;
    }
    

    Ejemplo para Visual Basic

    Public Function VersionDLL() As String
        Dim ensamblado = GetType(DatosMostrar).Assembly
        Dim fvi = FileVersionInfo.GetVersionInfo(ensamblado.Location)
        ' FileDescription en realidad muestra (o eso parece) lo mismo de ProductName
        Dim s = $"{fvi.ProductName} v{fvi.ProductVersion} ({fvi.FileVersion})" &
            $"{vbCrLf}{fvi.Comments}"
    
        Return s
    End Function
    

    Ese código mostrará la versión del ensamblado, la versión del fichero y la descripción, aunque en realidad a la propiedad a la que tienes que acceder es a Comments, ya que FileDesciption muestra lo mismo que ProductName.

    Y aquí tienes una captura para la aplicación de Android con los comentarios de las 3 bibliotecas que estoy usando, 2 de ellas escritas con Visual Basic y la tercera (la que le da funcionalidad visual a la aplicación está escrita en C#).

    Figura 1. Captura en el emulador de Android.
    Figura 1. Captura en el emulador de Android.

    Y esta otra captura es de la aplicación en el emulador (local) de UWP (Universal Windows Platform) pero con la aplicación real. Aunque en modo depuración.

    Figura 2. Captura en el (emulador) de UWP.
    Figura 2. Captura en el (emulador) de UWP.

    Espero que te sea de utilidad… Esa es siempre la idea…

    Nos vemos.
    Guillermo

    P.S.
    El puñetero Jetpack agrega código (de más) a las imágenes y cuando estas se muestran desde www.elguille.info, simplemente no se ven… pero… puedes pulsar en el sitio (en blanco) en el que está la imagen y te la mostrará…
    Lo mismo quito el Jetpack, que, aparte del «bloque» Markdown y el poder publicar en twitter y mi sitio de facebook, no me sirve de mucho…

  • Respuesta de Microsoft a la petición de seguir añadiendo características a Visual Basic

    Esto es solo para que aparezca en las entradas recientes.

    El comentario de hoy 8 de marzo de 2021 está en este enlace.

    Por cierto, la petición ya no se puede votar, porque la han cerrado, pero se pueden añadir comentarios… 😉

    #evolveVB #evolucionarVB

    Nos vemos.
    Guillermo

  • Nuevas ‘versiones’ de Visual Studio 2019

    Pues eso… con fecha de anteayer 2 de marzo, hay nuevas versiones de Visual Studio 2019, tanto para la versión final: v16.9.0 como para la preview: v16.10 Preview 1.0.

    Este es un extracto de las novedades de .NET Productivity de la versión 16.9.0:
    He resaltado las que, a mí me, parecen más interesantes.

    .NET Productivity (versión final v16.9.0)

    • There is now IntelliSense completion for preprocessor symbols.
    • Solution Explorer now displays the new .NET 5.0 Source Generators.
    • Go To All won’t display duplicate results across netcoreapp3.1 and netcoreapp2.0.
    • Quick Info now displays compiler warning IDs or numbers for suppressions.
    • Using directives will now automatically get added when copying and pasting types to a new file.
    • IntelliSense completion will now automatically insert a semicolon as a commit character for object creation and method completion.
    • Semantic colorization for C# 9.0 records.
    • Refactoring that removes unnecessary discards.
    • Refactoring that converts a verbatim and regular string to an interpolated string preserving curly braces that were intended to go in the output.
    • Code fix in Visual Basic that removes the shared keyword when you convert methods that are shared to a module.
    • A refactoring that suggests using new(…) in non-contentious scenarios
    • A code fix that removes redundant equality expressions for both C# and Visual Basic
    • The .NET Code Style (IDE) analyzers can now be enforced on build
    • The Syntax Visualizer shows the current foreground color for enhanced colors
    • A new tooltip when hovering over the diagnostic ID for pragma warnings
    • When you type the return key from within a comment the new line is now automatically commented out
    • Inline parameter name hints enhancements
    • .NET Core Debugging with WSL 2

    Para la versión preview… pues… mejor lo miras en la página de información publicada por la gente de Microsoft.

    Nos vemos.
    Guillermo