Error CS0518 - El tipo predefinido System.Runtime.CompilerServices.IsExternalInit no es definido o importado

 


Quise probar algunas de las nuevas versiones del lenguaje C#, empezando por la versión 9.

Primero: instale el SDK de NET 5.0. Hay que descargar e instalarlo. Para usar C#, se necesita al menos la versión 16.7 de Visual Studio 2019 (en realidad para aprovechar la versión NET 5.0 la versión correcta es la 16.8).

Lo que inicialmente probé fue la característica de Init-Only. Creamos una clase, creamos una propiedad, pero en vez del predeterminado "set", lo cambiamos a "init". Si la versión es la correcta, no saldrá ningún error.

Ahora, al hacer algunas pruebas, me había equivocado y en las opciones del proyecto había configurado como destino ".NET Core 3.1".

Y al establecer la propiedad en "init", Visual Studio me indicaba un error:

Error CS0518 - El tipo predefinido System.Runtime.CompilerServices.IsExternalInit no es definido o importado.

La solución fue cambiar el destino del proyecto a "NET 5". Pero lo bueno es que aún teniendo .NET Core 3.1 se puede usar "init" en la clase, referenciando el espacio de nombres.


//este código podemos crearlo en algún punto de nuestro proyecto
using System.ComponentModel;

namespace System.Runtime.CompilerServices
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    internal class IsExternalInit{}
}

De esa forma podemos usar "init" sin "NET 5.0".

Comentarios