Compilar y ejecutar (utilidad para .NET)

Pues eso… esta utilidad la publiqué el 5 de enero de 2019, pero solo en elguille.info (Utilidades para .NET: Compilar y ejecutar) y aparte del código fuente puse la opción de instalarla usando ClickOnce.

En esa ocasión utilizaba código de Roslyn 2.0.1 (Microsoft.CodeDom.Providers.DotNetCompilerPlatform) para compilar el código desde la aplicación: se tomaba el código (un texto) de Visual Basic o C#, se compilaba y se mostraba el resultado por la consola virtual usada en la aplicación, de modo que pudieras ver el resultado de la salida.

Algo como lo mostrado en la siguiente captura, donde el panel superior es el código y el inferior es la salida al compilar y ejecutar dicho código.

 

El código de esa utilidad lo he cambiado con fecha del 30 y 31 de agosto de 2020, entre otras cosas para usar Roslyn 3.6.0, que actualmente es la versión más reciente.

Y el escribir esto aquí, en el blog, es para comentarte que al usar esa nueva versión del paquete de NuGet daba error al ejecutar el código (y pulsar en el botón de compilar).

El error era que no encontraba el compilador de Visual Basic (vbc.exe) o C# (csc.exe) y el path que daba era el path del ejecutable seguido de bin\roslyn, por ejemplo: «<resto del path>\bin\roslyn\vbc.exe»

Yo ya estaba por desistir y dejar la versión 2.0.1 de Roslyn ya que al fin y al cabo me permitía usar la versión más reciente de los compiladores de VB y C#, pero buscando en el NuGet del CodeDom.Providers.DotNetCompilerPlatform de Roslyn 3.6.0 y concretamente al mirar en el enlace que hay debajo de «This package was built from the source at» me llevó al GitHub de aspnet / RoslynCodeDomProvider. Y mirando en las Issues (había 3) me topé con la de WolfgangHG con el título: [3.6.0] Missing entry «aspnet:RoslynCompilerLocation» in app.config causes compile to fail, y eso era todo lo que hacía falta… añadir un trozo de código que en teoría faltaba para que funcionara a la perfección (ese código si se incluye en roslyn 2.0.1) y es este:

  <appSettings>
    <add key="aspnet:RoslynCompilerLocation" value="roslyn"/>
  </appSettings>

Y ya si quieres, cambia la asignación de compilerOptions de C# y VB (en la sección system.codedom / compilers) para que la versión del compilador sea la predeterminada: /langversion:default. Ya que en mi caso, la versión de C# estaba en la 7.3 y se puede usar la 8.0. Con Visual Basic, la «default» es la versión 16 (la última hasta la fecha de hoy).

En la siguiente captura puedes ver las versiones que aceptan los compiladores vbc.exe y csc.exe en el Roslyn 3.6.0:

Versiones de los lenguajes de VB y C# soportadas por los compiladores incluidos en Roslyn 3.6.0

Como ves, la versión predeterminada (y la mayor) de vbc.exe en la 16, mientras que la del compilador de C# (csc.exe) es la 8.0.

NOTA:
En la preview de Visual Studio 2019 la versión más alta de C# es la 9.0, la de VB sigue siendo la 16.

Nota:
Desde la página de la utilidad en elguille.info puedes instalarla con ClickOnce y tienes el código fuente de la utilidad (en Visual Basic) y algunos ejemplos tanto en VB como en C#.

Nos vemos.
Guillermo

Deja una respuesta

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