[C#] Come posso correggere gli errori CS0433 in ASP.NET 5?


Answers

È necessario specificarlo come dipendenza framework.

"frameworks": {
     "dnx451": {
      "frameworkAssemblies": {
         "System.Collections":  ""
       }
     }
}
Question

La riga di codice che causa un qualsiasi riferimento al tipo System.Collections.Generic.Dictionary sia come tipo di variabile, sia in una dichiarazione di utilizzo.

Questa dichiarazione Using ha funzionato bene e ha reso le mie classi meno disgustose di dover scrivere System.Collections.Generic.Dictionary<string, object> in 100 punti nella mia classe. Prendere le dichiarazioni di Using out non risolve il mio problema, lo sposta semplicemente nei punti in cui il tipo di dizionario viene usato nei miei parametri di metodo.

Testo dell'errore completo:

CS0433  The type 'Dictionary<TKey, TValue>' exists in both
'System.Collections, Version=4.0.10.0, Culture=neutral,
  PublicKeyToken=b03f5f7f11d50a3a' 
 and 
'mscorlib, Version=4.0.0.0, Culture=neutral, 
 PublicKeyToken=b77a5c561934e089'   ProjectName.DNX 

Questo errore si verifica nei progetti basati su modelli ASP.NET 5 MVC 6 che utilizzano DNX 1.0.0-beta7, con alcune classi di modelli e controllori che fanno riferimento a tipi di raccolta generici. Project.json è impostato in questo modo:

  "frameworks": {
    "dnx451": { }
  }

Il problema di esempio si verifica se hai appena detto:

  "frameworks": {
    "dotnet": { }
  }
  • La linea di codice che la causa è una dichiarazione Using, un alias di tipo, che ha funzionato bene fino a quando non provo a convertire un progetto beta6 in beta7.

  • La conversione procede finché non provo ad aggiungerli usando alias JsonDictionary, quindi le interruzioni di compilazione.

Ho cercato questo codice di errore e ha una lunga e ingloriosa cronologia in ASP.NET.

Cosa causa questo problema? E come posso risolvere il problema, dal momento che non posso rimuovere mscorlib dal mio progetto, né posso rimuovere System.Collections?