2015-01-09 9 views
8

Ho bisogno di leggere e salvare un file JSON all'interno di un'app ASP.NETt vNext, e vorrei usare una variabile dynamic per memorizzare il valore caricato usando JSON.net, ma quando vado a compilare ho ricevuto questo messaggio di errore:non è possibile utilizzare il tipo dinamico con asp.net vnext core

ASP.NET 5.0 Nucleo errore CS1980: Impossibile definire una classe o di un membro che utilizza 'dynamic' perché il tipo di richiesta compilatore 'System.Runtime.CompilerServices.DynamicAttribute' non può essere trovato. Ti manca un riferimento?

Come può risolvere questo? Se utilizzo dynamic, posso eseguire un'applicazione utilizzando il nucleo di ASP.NET?

risposta

5

È necessario includere i pacchetti Microsoft.CSharp e System.Dynamic.Runtime per il framework aspnetcore50.

Questo sembra funzionare per me con CoreCLR la versione 1.0.0-beta1:

using Newtonsoft.Json.Linq; 
using System; 

namespace DynamicTest 
{ 
    public class Program 
    { 
     public void Main(string[] args) 
     { 

      dynamic dobject = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}"); 

      Console.WriteLine(dobject.number); 
      Console.WriteLine(dobject.str); 
      Console.WriteLine(dobject.array.Count); 
      Console.ReadLine(); 
     } 
    } 
} 

Il project.json

{ 
    "version": "1.0.0-*", 
    "dependencies": { 
     "Newtonsoft.Json" : "6.0.7" 
    }, 
    "commands": { 
     "run" : "run" 
    }, 
    "frameworks" : { 
     "aspnet50" : { }, 
     "aspnetcore50" : { 
      "dependencies": { 
       "System.Console": "4.0.0-beta-22231", 
       "System.Dynamic.Runtime": "4.0.0-beta-22231", 
       "Microsoft.CSharp": "4.0.0-beta-22231" 
      } 
     } 
    } 
} 
+0

grazie, sembra funzionare anche per me. –

2

stavo combattendo questo problema, insieme con un errore ancora meno utile messaggio ...

il tipo o dello spazio dei nomi il nome 'Linq' non esiste nello spazio dei nomi 'System.Data'

Ma, stavo correndo nel problema sul mio server IIS (2012 R2 - IIS 8). La maggior parte dei post che ho letto su questi problemi riguardavano il loro ambiente di sviluppo, non il loro server web.

Per risolvere entrambi i problemi, ho dovuto copiare System.Core.dll, dalla cartella dei server framework (% windows path% \ Microsoft.Net \ Framework \ v4.0.30319), nella cartella bin delle applicazioni Web .

Non sono chiaro sul perché fosse necessario, ma ho trascorso 3 giorni a leggere la documentazione e i post del forum, e non ho funzionato. Siamo appena stati fortunati ...

Forse questo aiuterà qualcun altro che sta lottando.