c# roslyn .net-core .net-standard-1.6

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?



Haga clic con el botón derecho en el proyecto> Administrar paquetes de NuGet ...> Agregue los siguientes dos paquetes resaltados:


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.