Domanda

Ho appena installato VS 2010 Beta 2 e volevo giocare con un progetto ASP.NET MVC 2. Ho semplicemente aggiunto alcuni script ( alert ('hello'); ) nella vista index.aspx del controller Home e posso vederlo in esecuzione. Quando provo a impostare un breakpoint, tuttavia, non viene mai colpito. Ho anche provato a utilizzare il "debugger" parola chiave e, quando lo faccio, ottengo un deludente " non esiste un codice sorgente disponibile per la posizione corrente " Messaggio. Ricevo anche questo messaggio quando provo a collegarmi in modo indipendente a un processo IE in cui è in esecuzione la mia app.

Cosa devo fare per ottenere un'esperienza di debug degli script amichevole? (Ho usato con successo Firebug per eseguire il debug di questo, ma per qualche ragione preferisco il debugger VS.)

Ecco alcuni dettagli della mia configurazione:

  • Sto lanciando le mie cose in VS 2010 Beta 2.
  • IE8 versione 8.0.7600.16385 è il mio browser predefinito.
  • Il " Disabilita debug degli script (Internet Explorer) " l'opzione avanzata è deselezionata.
  • Il " Disabilita debug degli script (Altro) " l'opzione è deselezionata.
  • Nel mio progetto ASP.NET MVC 2 " web " scheda proprietà, il debugger ASP.NET è selezionato. Tutti gli altri sono deselezionati.
  • Il debug degli script di Visual Studio 2008 sembra funzionare correttamente.
È stato utile?

Soluzione

Il debugger non può eseguire contemporaneamente il debug sia del codice Silverlight sia del codice Script, se è selezionato il debugger Silverlight Il debug JavaScript è disattivato.

  1. Vai alle proprietà del progetto (Alt + Invio).
  2. Per un progetto di sito Web: seleziona " Opzioni di avvio " ;. O per un'applicazione Web: vai alla scheda Web e in basso vedrai l'opzione Debugger.
  3. Controlla che la casella Silverlight NON sia spuntata se vuoi essere in grado di eseguire il debug di JavaScript. (È un peccato che l'interfaccia utente qui non sia chiara su questo effetto collaterale.)

Altri suggerimenti

Avevo gli stessi problemi. Non sono riuscito a far rompere l'IDE nemmeno in un punto di interruzione impostato all'interno di un tag di script. Tuttavia, quando ho aggiunto " debugger; " poiché la prima riga nel tag dello script era in grado di far rispondere l'IDE, ma solo per dire che il disassicuratamente non era disponibile.

Tuttavia, sono stato in grado di fare clic sugli strumenti di debug come " entrare in " e "passare oltre". Quando l'ho fatto, l'IDE ha fatto progressi in alcuni degli script esterni che sto usando (JQuery e Google Maps). Quindi ho tolto il blocco del codice JavaScript dalla vista e l'ho messo in un file .js separato nel " Contenuto " cartella. Poi ho aggiunto un tag script per fare riferimento a questo nuovo file .js (url = " /Content/Test.js").

Ha funzionato ... un po 'fastidioso dover affrontare questo sforzo, ma forse c'è qualcosa da dire che JavaScript non viene incluso direttamente in una vista. Spero che questo sia un bug che intendono correggere.

Durante il debug su Internet Explorer, VS sembra aggiungere una cartella denominata "Documenti script" a Esplora soluzioni. All'interno di questa cartella c'è un'altra cartella chiamata 'Windows Internet Explorer', e al suo interno vedo tutti gli script js caricati e il file HTML (compilato) attualmente visualizzato su Internet Explorer. L'impostazione dei punti di interruzione sui tag di script in questo file HTML funziona per me.

Per risolvere questo problema, vai alle Proprietà del progetto e seleziona " Opzioni di avvio " ;. Quindi selezionare la casella di controllo Codice nativo. e deseleziona la casella Silverlight perché entrambe le opzioni non funzionano insieme.

CTRL + Alt + P (Allega al processo), selezionare IE, selezionare 'script' per il tipo di debug.

Come notato da Ryan sopra, ho spostato il mio script in un file separato nella cartella Scripts. Ho anche aggiunto il debug al nome dello script in modo che diventasse MyTestScript. debug .js. Ho incluso lo script tramite un tag di script e ho potuto impostare i punti di interruzione nel file di script colpito dal debugger.

Ho scoperto che lo strumento Devloper di Google Chrome mostra perfettamente JavaScript. Nel mio caso, sto normalmente caricando lo script con la funzione getScript di jQuery e l'esecuzione del codice avviene in genere tramite un callback jQuery al caricamento di una pagina o alla gestione di un evento. Con Visual Studio 2010, ho riscontrato spesso " Nessuna fonte " bug. Purtroppo ho bisogno di Chrome per eseguire il debug di JavaScript che fa parte del mio progetto Visual Studio.

L'uso di un file js separato ha i suoi svantaggi. Ad esempio, non è possibile utilizzare gli helper MVC. Microsoft ha davvero bisogno di capirlo.

Intellisense inoltre non funziona correttamente nei blocchi di script in una vista, anche se si includono i commenti di riferimento come questo:

/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />

Intellisense funziona bene nel file js con questo approccio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top