7

Attualmente sto usando Microsoft Code Contracts in un'applicazione ASP.NET MVC senza problemi, ma non riesco a farlo funzionare abbastanza in un sito Web ASP.NET di base. Non sono del tutto sicuro che sia stato fatto per funzionare con questo tipo di progetto (anche se non dovrebbe essere importante), quindi ho voluto portarlo a tutti.I contratti di Microsoft Code possono essere utilizzati con un sito Web ASP.NET?

Posso compilare i contratti bene ma il codice li ignora poiché suppongo che non sia stato abilitato tramite la Pagina delle proprietà come si farebbe in altri tipi di progetto (es. ASP.NET MVC). Sono andato alla pagina delle proprietà del progetto (che visualizza una finestra di dialogo invece della tipica pagina delle proprietà) nel mio sito Web ASP.NET ma non offre le stesse opzioni di menu e, in quanto tale, non ha una sezione dedicata per contrattare i contratti.

Inoltre, i Contratti di codice Microsoft sono abilitati correttamente all'interno di un progetto di libreria di classi che utilizzo per separare la logica aziendale dal sito Web. I contratti vengono compilati correttamente ma quando un contratto viene violato, genera un errore "Exception of type 'System.ExecutionEngineException' was thrown" piuttosto privo di informazioni senza eccezione interna. Il mio contratto specifica un messaggio da visualizzare in caso di violazione, ma non si trova da nessuna parte nell'eccezione. Interrompe semplicemente l'esecuzione del processo (che credo sia la funzionalità predefinita per i Contratti Microsoft Code).

Non riesco a trovare da nessuna parte che esplicitamente afferma che un particolare tipo di progetto può o non può (o non dovrebbe) essere utilizzato con Contratti quindi volevo solo vedere se qualcuno ha avuto questo problema.

Grazie per qualsiasi aiuto!

+0

Avendo lo stesso problema, sei mai arrivato a fondo? – Kieron

risposta

0

Questo suona meno come un Contratti e più come un problema di build/config. Hai provato a distribuire un sito Web predefinito? Sei sicuro che il codice del tuo sito web veda il codice dei contratti? Il runtime ASP.NET utilizza CLR 4.0 o visualizza il precedente Microsoft.Contracts.dll? Ecc

1

ho avuto lo stesso problema e questo è come ho risolto:

nella classe librerie di riferimento, fare clic destro -> Proprietà -> contratti di codice. Assicurarsi che "Esegui controllo contratto" sia selezionato. Ho avuto il mio impostato su "Completo" Assembly di riferimento del contratto: assicurarsi che sia impostato su "Build"

Salvare le modifiche.

Nelle librerie di classi di riferimento che non hanno contratti nel loro codice, impostare il gruppo di riferimento del contratto su "Non compilare".

Quindi nel progetto MVC, fare in modo che i Contratti di codice "eseguano il controllo del contratto" controllati. Ho avuto il mio impostato su "Full".

La speranza che aiuta qualcuno.

Problemi correlati