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.