Il problemaIl tipo 'System.Data.Linq.DataContext' è definito in un assembly che non si fa riferimento
errore quando si va a una pagina specifica (in eseguire il debug locale): CS0012: Il sistema di tipo ' .Data.Linq.DataContext 'è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'System.Data.Linq, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'.
Qui ci sono le righe di codice di riferimento nel messaggio di errore:
Linea 28:
Linea 29:
Linea 30: public class _Page_Views_blah_granny_cshtml: System.Web.Mvc.WebViewPage {
Linea 31:
Riga 32: #linea nascosta
Tutte le altre pagine funzionano in modo ottimale - questo accade solo quando si accede a una pagina in particolare. Il riferimento funziona su tutte le altre pagine. Per quanto sono in grado di determinare, questo non è un problema con il riferimento.
Ho trascorso un buon periodo di tempo alla ricerca di questo problema.
Tutte le risposte che ho trovato suggerivano di andare a web.config e inserire un riferimento all'assembly a linq in system.web> configuration> assembly. Il mio non ha assemblaggi elencati e ho il sospetto che questo è più per le versioni precedenti. L'ho fatto lo stesso. Mi ha dato un altro errore dicendo che non ha idea di cosa fare con gli assembly.
Ho eliminato system.data.linq e l'ho aggiunto di nuovo.
Ho riavviato sia VS che il mio computer.
Il mio codice - come generato per impostazione predefinita da VS - ha System.Linq.
Background - Ecco come questo è cominciato:
L'applicazione è MVC 4, C#.
Ho creato una nuova classe nel mio DataContext, aggiunto un nuovo controller e creato una vista fortemente tipizzata.
Ecco un codice molto simile (probabilmente non necessario, ma nel caso).
due classi:
public class granny {
public string data { get; set; }
public string criteria { get; set; }
}
public List<granny> getGranny() {
var a = from x in grannytable
join dx in anothertable
on x.criteria equals dx.criteria
select new granny {
data = x.somenewdata;
};
return a.ToList();
}
Ecco il controllore:
public ActionResult granny() {
return View(db.getGranny());
}
Niente di speciale qui.
La pagina è una tipica vista a rasoio, fortemente digitata "Elenco" ... ha una tabella che itera creando, scaricando i dati man mano che procede.
Sono felice di fornire qualsiasi codice aggiuntivo, se necessario.
Non ho problemi con web.config. Non ho rimosso o ottimizzato nessuno dei riferimenti sulle pagine. Tutte le altre visualizzazioni funzionano meravigliosamente.
Quando lo eseguo localmente, e provo ad andare su/nonna, ottengo l'errore sopra riportato.
Grazie per il vostro aiuto!
LA SOLUZIONE: Sono entrato in riferimenti e per System.Linq (o per versioni precedenti, suppongo, System.Data.Linq) e ho cambiato CopyLocal su True.
Dimenticando gli assembly nel file di configurazione, il tuo progetto non ha solo un set di riferimenti "normale"? (In Solution Explorer, c'è un elemento References?) –
Esiste sicuramente. Fa riferimento a System.Data.Linq. Ho rimosso il riferimento e l'ho aggiunto, pensando che qualcosa fosse stato appeso lì. Sto usando .NET System.Data.Linq incluso. Punta a C: \ Programmi \ Assiemi di riferimento \ Microsoft \ Framework \ .NETFramework \ v4.0 \ System.Data.Linq.dll come dovrebbe. Vale la pena notare che le mie altre pagine stanno usando linq bene. Non penso che sia un problema di riferimento linq, perché non è un problema gregario - è solo questa una pagina. – shubniggurath
puoi fornire una soluzione completa o un progetto che dimostri il problema? – Phil