c# github - Come posso correggere gli errori CS0433 in ASP.NET 5?




dot core (3)

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?


Answers

È necessario specificarlo come dipendenza framework.

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

In beta6, quando hai creato un progetto di libreria di classi, avrebbe configurato la sezione framework come hai postato con "dotnet", ma se crei un nuovo progetto di libreria di classi in beta7 lo imposterà in questo modo:

"frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23225",
        "System.Collections": "4.0.11-beta-23225",
        "System.Linq": "4.0.1-beta-23225",
        "System.Runtime": "4.0.21-beta-23225",
        "System.Threading": "4.0.11-beta-23225"
      }
    }
  }

Credo che se aggiorni il tuo progetto di conseguenza, risolverà il problema.


Visual Studio 2015 non installa C ++ per impostazione predefinita. È necessario rieseguire la configurazione, selezionare Modifica e quindi selezionare Linguaggio di programmazione -> C ++





c# visual-studio-2015 asp.net-core