sharplab.io una utilidad online para ver el código tal como lo compila .NET

Pues eso… viendo el video de Filip Ekberg sobre los record en C# 9.0 (siempre hay que intentar aprender más) me gustó ver que mientras explicaba el código se veía el código desemsamblado (como lo genera el compilador de .NET) y es usando una herramienta online accesible mediante el enlace a https://sharplab.io/.

Si pones la dirección https://sharplab.io/ en el navegador, te mostrará una ventana con dos paneles.

Con las siguientes capturas te voy explicando un poco cómo configurar el «entorno» de trabajo.

En la figura 1 vemos el entorno ya configurado para usar los compiladores de Roslyn, para eso indicamos master (11 nov 2020) (es la que hay a día de hoy 13 de noviembre) que como ves con más detalle en la figura 2 nos permite seleccionar el «framework» a usar para compilar el código que pongamos en el panel izquierdo.

En la figura 3 puedes ver que se pueden usar los tres lenguajes que se incluyen en .NET, es decir: C#, Visual Basic y F#.

En el panel derecho se muestra el código decompilado, por defecto es en C# (sí, aunque en la izquierda lo escribas con otro lenguaje diferente a C#).

Pero como puedes ver en la figura 4 se puede mostrar de otras formas, eso sí, si quieres ver el código tal como lo trata el compilador, éste será en C#.
Las otras opciones son, entre otras,. el código ensamblado IL o incluso en ejecución (Run).
Ya es cuestión de ir probando cada una de esas opciones de la figura 4 para ir viendo cómo nos muestra el código.

En la figura 5 puedes ver código de Visual Basic (en el panel izquierdo) y el resultado de compilarlo y mostrarlo en C#.

En la figura 6 te muestro un trozo de código de C# 9.0 usando las instrucciones de nivel superior (top-level statements) y los tipos de registro (record).

Pero fíjate que he señalado una clase que (al menos así parece ser) es requerida para poder usar el código de tipo nivel superior, es decir, sin necesidad de crear el método Main, etc.), ya que si quitas ese código te dará error, tal como puedes ver en la figura 7.

Y si te gusta usar el tema oscuro, en la parte inferior derecha (junto a Theme) puedes seleccionar entre Auto, Light y Dark. A mí me ha mostrado el modio claro (Light) cuando lo inicié y ahí abajo me indicaba Auto tal como puedes ver en la figura 1.

Y esto es todo… es cuestión de ir practicando y probar más cosas de esta útil herramienta online.

Figura 1.

Figura 2.

Figura 3.

Figura 4.

Figura 5.

Figura 6.

Figura 7.

Nos vemos.
Guillermo

6 comentarios en “sharplab.io una utilidad online para ver el código tal como lo compila .NET

  1. Hugo Ruiz

    Hola Guille, ¿?hay alguna forma de compilar un programa en C# que no pueda facilmente decompilarse?¿No puede hacerse cómo en c++? ¿No hay forma de proteger el código? Saludos

    Responder
  2. Hugo Ruiz

    Hola Guille, ¿Hay alguna forma de compilar un programa en C# que no pueda facilmente decompilarse?¿No puede hacerse cómo en c++? ¿No hay forma de proteger el código? Saludos

    Responder
    1. elGuille Autor

      Que yo sepa no la hay… antes existían utilidades para hacer difícil ver el código generado, pero no recuerdo el nombre, aunque una búsqueda en la red puede darte algunas opciones.
      Ya me contarás si encuentras alguna forma de protegerlo.
      Gracias.

      Responder
      1. Hugo Ruiz

        Hace un par de años hice una pequeña aplicación, pero que era necesaria mucha confidencialidad, mi susto fue que un joven de apenas unos veinte, decompiló fácilmente el programa y quebró la seguridad de lo que ahí se manejaba. Parece que por ese tremendo detalle, de falta de seguridad en el código, habría que buscar otras plataformas. Muchas gracias por contestar mi pregunta.

        Responder
        1. elGuille Autor

          Hombre, lo que hay que intentar es no poner contraseñas en el código, como mucho un HASH que verifique esa clave y el usuario, ya que los HASH son más seguros que las contraseñas y nombre de usuario.

          Aquí tienes un ejemplo de cómo crear un HASH a partir de una cadena (normalmente la combinación del nombre de usuario y la contraseña):
          http://www.elguille.info/NET/WinFX/gsGenerarClaveSHA1/Default.aspx

          Pensaba que tenía un ejemplo más genérico (que es el que yo uso habitualmente), veré de publicarlo en estos días.

          Actualizado el 19-nov-20202 a las 12:34 GNT+1:
          Este es el artículo que acabo de publicar:
          http://www.elguillemola.com/2020/11/generar-clave-sha1-con-el-nombre-y-password-del-usuario/

          Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *