2015-02-13 7 views
8

Ho un progetto MVC5 attualmente impostato su "Release Configuration" e funziona al 100%. Tuttavia, non appena cambio la configurazione del progetto da Release a Debug, allora tutto va storto ... anche se riaccendo in modalità Release, tutto è ancora rotto. L'unico modo per far funzionare di nuovo il progetto è il ripristino da un backup.MVC5 con VB.NET: "BC30451: 'ViewData' non è dichiarato." quando si passa alla configurazione Debug

Ecco cosa sta succedendo. In primo luogo, quando si esegue il progetto, ottengo il seguente errore:

BC30451: 'ViewData' is not declared. It may be inaccessible due to its protection level.

Se apro qualsiasi vista nel progetto con Visual Studio 2013, posso vedere che ogni sorta di cose sono contrassegnati come errori come Viewdata, Html , Url, ecc.

Quando si fa riferimento a @Html o @ViewData nella vista, normalmente fa riferimento alle proprietà .Html e .ViewData della classe di base della vista (WebViewPage). Tuttavia, se inizio a digitare "@HTML". in ognuna delle visualizzazioni, posso vedere nel completamento automatico che si riferisce allo spazio dei nomi System.Web.Webpages.Html invece della proprietà WebViewPage.Html. È come se la vista non ereditasse dalla classe System.Web.Mvc.WebViewPage.

Qualche consiglio su dove posso iniziare a cercare di risolvere il problema o perché questo sta accadendo?

Edit: Quindi, dal momento che nessuno ha risposto, mi ha attraversato la strada più lunga. Ho creato un nuovissimo progetto MVC5, aggiunto tutti i pacchetti tramite Nuget e poi semplicemente copiato tutti i miei file dal vecchio progetto a quello nuovo e ora funziona.

Qualcuno ha idea di cosa diavolo potrebbe causare questo? Non voglio più affrontare questo problema in futuro se il progetto dovesse improvvisamente smettere di funzionare.

+0

La stragrande maggioranza del tempo, avete un problema di web.config in cui non è stato specificato il corretto montaggio reindirizza o la vostra web.config.release sovrascrive parti del web.config, che interferisce con la tua progetto. – Tommy

+0

Ho affrontato anche questa volta l'ultima volta. ma ricordo che era solo un avvertimento, non un errore? – Baby

risposta

1

Ok, penso di aver trovato una parte della causa qui. Il fatto è che, poiché il codice originale è valido (si compila correttamente e intellisense lo preleva) e il codice utilizzato per funzionare e poi all'improvviso, un giorno dopo la compilazione, smette di funzionare.

In ogni caso, nella vista, quando si specifica ModelType, se non si utilizza il nome completo, questo errore può verificarsi o si verifica eventualmente. Ad esempio, utilizzando:

@ModelType Models.SomeNamespace.SomeClass 

causerà l'errore (anche se lo spazio dei nomi Root per il progetto è "MyProject") e può essere risolto semplicemente specificando lo spazio dei nomi e la classe nome completo.

@ModelType MyProject.Models.SomeNamespace.SomeClass 
+0

Mi sono imbattuto in questo stesso problema su un progetto MVC che ho convertito da VB.NET in C#. La tua risposta sopra mi ha messo sulla strada giusta. Stranamente, ho dovuto fare il contrario. Semplificando la dichiarazione '@ ModelType' da uno spazio dei nomi completo, solo al nome della classe da solo. – bkwdesign

+0

Su una nota laterale, continuo a scoprire che il codice del progetto MVC "stabile", nel tempo, sembra degradarsi magicamente. Penso che le dipendenze di NuGet, quando vengono ricostruite da zero, non siano "affidabili" come talvolta pubblicizzato – bkwdesign

1

È possibile che un gruppo di debug sia bloccato. Può chiudere Visual Studio, cercare ed eliminare per tutte le cartelle bin nella directory della soluzione. Quindi apri e ricostruisci.

Le altre opzioni sono di andare nelle proprietà del progetto MVC e confrontare le due configurazioni di build. Stai prendendo di mira un framework .NET diverso tra Release e Debug? 32 bit contro 64 bit? eccetera?

Problemi correlati