c# - ¿Referencia dinámica en una aplicación.net core dirigida a la red estándar 1.6?
roslyn .net-core (3)
Estoy tratando de usar una variable dynamic en una aplicación central de C # .net que apunta a .net estándar 1.6. (¿plataforma? ¿biblioteca? ¿marco? ¿meta-marco?) Primero encontré este problema en una aplicación real, pero lo he reducido a una reproducción mínima.
proyecto.json
{
"version": "1.0.0-*",
"buildOptions": { "emitEntryPoint": true },
"dependencies": { "NETStandard.Library": "1.6.0" },
"frameworks": {
"netstandard1.6": { "imports": "dnxcore50" }
},
"runtimes": { "win10-x64": {} }
}
Program.cs
using System;
public class Program {
public static void Main(string[] args) {
dynamic hello = "hello world";
Console.WriteLine(hello);
}
}
Cuando intento compilar esto, recibo un error de compilación en Console.WriteLine(hello); diciendo esto
CS0656 Falta el compilador requerido miembro ''Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create''
¿Es posible usar variables dynamic en una aplicación dirigida a netstandard 1.6? ¿Cómo?
Agregue System.Dynamic.Runtime y Microsoft.CSharp como dependencias.
Si está escribiendo una aplicación, no una biblioteca, debe usar Microsoft.NETCore.App , no NETStandard.Library y netcoreapp1.0 , no netstandard1.6 . Hacer eso arreglaría tu problema.
Si desea utilizar la dynamic en una biblioteca (o aplicación que no depende de Microsoft.NETCore.App ), debe agregar Microsoft.CSharp como una dependencia.