2012-10-02 7 views
14

mia struttura del progetto si presenta così:Impossibile eseguire il progetto MVC4 se non si utilizza directory standard output

  • src
    - libreria di classi 1
    - Libreria di classi 2
    - progetto web
  • bin
    - di debug
    - rilasciare

La directory di output predefinita per un progetto Web MVC4 è .\Bin\ (ad es. all'interno della directory del progetto web), ma lo cambio in qualcosa come ..\bin\debug\ o ..\bin\release\ per adattarsi alla mia struttura di progetto sopra. Compilano bene e i binari vanno nei posti corretti.

Ma quando eseguo il progetto si lamenta che Could not load type Myproject.MvcApplication, mentre se non apporto le modifiche precedenti, allora funziona.

Come controllo la posizione dei file binari? Voglio che la directory di output sia completamente separata dalle directory di origine: è più facile da implementare e più sicura perché non ho una combinazione di sorgenti e binari in un unico posto.

risposta

10

Risposta breve, non è possibile. Non ha nulla a che fare con Visual Studio o anche con .NET, è una restrizione IIS.

Il motivo è che IIS si aspetta che la directory bin si trovi direttamente nella posizione della cartella del sito Web. Questo è un meccanismo di sicurezza che non puoi bypassare. Lo scopo è quello di impedire che un sito Web compromesso "sfugga" dai limiti della radice direttamente al sito.

Perché vorresti farlo?

+0

Perché utilizzo msbuild e distribuisco tutto dalla directory bin di output di msbuild. E perché voglio che la fonte sia separata dai binari, così non accetto mai involontariamente i file a qualcuno che non dovrebbe averli. –

+0

Non vedo questo come un problema. Forse quello che devo fare è capire come, per comodità, quando faccio clic sul pulsante run/debug, esegue il sito web dalla directory bin del mio msbuild e non dalla directory bin del progetto. Posso fare IIS Express farlo? –

+0

@BobbyB - Non puoi eseguire il tuo sito web dalla directory Bin, ha bisogno di accedere ai file, come i file di visualizzazione, javascript, immagini, ecc ... questi devono essere tutti sotto la directory root, quindi se crei la tua directory bin la tua directory radice, quindi dovresti copiare l'intera struttura del sito web all'interno della directory bin. Non hai davvero senso. –

2

Colgo anche questo, è inaspettato e confuso dato che la separazione dei binari di debug e di rilascio è una pratica standard e MVC ha un'impostazione di cartella di output che rende allettante farlo. È possibile farlo, vedi here, ma è un po 'brutto.

Sembra che esista un conflitto tra l'aderenza alle aspettative di IIS e la necessità di mantenere il debug e il rilascio separati e chiaramente etichettati. Penso che sia necessario che la soluzione attuale non soddisfi molto bene. Il debug e il rilascio sono considerazioni sul tempo di costruzione, il rispetto di IIS è il tempo di pacchettizzazione/implementazione e i due sono confusi.

Problemi correlati