2012-05-04 15 views
44

Ho un'applicazione MVC 4 e funziona bene sulla mia macchina DEV dove ho installato MVC 4 estensione per VS 2010.Devo installare MVC 3/4 sul web server per eseguire l'applicazione MVC

Quando si distribuisce a il web server con IIS 7, devo installare MVC 4 o la dll inclusa nel mio progetto è sufficiente?

Il motivo per cui sto chiedendo è che dobbiamo fornire il requisito al team di infrastruttura.

Grazie.

risposta

79

È possibile eseguire un'applicazione MVC senza installare MVC sul server. C'è qualcosa chiamato dipendenza deployable in Visual Studio. Questo pubblicherà le tue DLL MVC nella cartella bin quando lo pubblichi.

dalla pagina msdn,

Questo aggiungerà assemblee (file DLL) per un progetto di sito Web o applicazione Web progetto. Quando si distribuisce il sito Web o l'applicazione, i file sono inclusi nel progetto distribuito. Ciò è utile se le applicazioni o le tecnologie da cui dipende il progetto non sono già installate su il server che ospiterà il progetto Web. Ad esempio, è possibile utilizzare questa funzione per distribuire un'applicazione Web ASP.NET MVC 3 su un server in cui non è installato ASP.NET MVC 3.

tasto destro del mouse sul progetto e selezionare Aggiungi Deployable dipendenza dal menu contestuale

enter image description here

Selezionare quello che tutte le DLL che si desidera da pubblicare

enter image description here

Dopo aver fatto clic su OK, Verrà visualizzata una nuova cartella denominata _bin_deployableAssemblies. Ora puoi eseguire la normale procedura di pubblicazione e avrai le dll nella cartella bin dell'output di pubblicazione.

enter image description here

controllare questo post per maggiori dettagli http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx

Si dovrebbe disporre di Visual Studio 2010 SP1. Altrimenti non verrà mostrato nel menu contestuale quando si fa clic con il tasto destro del mouse sul progetto da pubblicare.

EDIT: Come di MVC4, tutte le assemblee necessarie per eseguire un'applicazione MVC vengono automaticamente aggiunti alla directory bin, e qualsiasi applicazione MVC4 è bin-schierabili (significa che è possibile eseguire in un server senza installare esplicitamente MVC). Per questo motivo, la finestra di dialogo Includi schieramenti installabili è stata rimossa da Visual Studio 2012

+1

Shyju Ho un'applicazione MVC4 che non è l'aggiunta di tutti i gruppi necessari al raccoglitore (System.Web.Razor). Hai informazioni o un link su come questo è controllato/realizzato in MVC4? Grazie – Joe

+2

l'ho capito. In VS 2012 è necessario impostare la copia locale del riferimento su True nelle sue proprietà. Vedi post: http://stackoverflow.com/questions/15145253/general-system-web-razor-error-also-postal-project appena visto che AvkashChauhan già risposto che qui di seguito. – Joe

+1

Ho appositamente installato sul lato server MVC 3 e MVC 4 pacchetti sul server per evitare di copiare le librerie comuni MVC ogni volta (abbiamo un sacco di siti web poco separati, e le librerie comuni sommare fino a gigabyte). Funziona perfettamente con MVC 3 (nessun binari condivisi vengono copiati), ma non funziona affatto con MVC 4 - se ho impostato CopyLocal = false per binraies condivise, il sito web non funziona. Qual è il punto del pacchetto lato server, quindi? C'è un modo supportato per avere MVC 4 installato a livello globale in GAC, come avviene per MVC3? – GSerg

4

Quando si crea un progetto specifico MVCx in Visual Studio, verranno aggiunti molti riferimenti MVC. * Al progetto e per impostazione predefinita tutte queste proprietà di riferimento "Copia locale" sono impostate come "Vero" significa che questi riferimenti essere parte della soluzione finale ogni volta che verrà distribuito a. Puoi anche verificare che questi riferimenti specifici MVC facciano parte della tua cartella BIN.

Infine, quando si confezionare questa soluzione e pubblicare a uno specifico server Web o per Windows Azure o utilizzare WebDeploy, tutti questi riferimenti saranno parte del pacchetto anche. E poiché questi riferimenti vengono forniti nel pacchetto in modo tale da distribuire la soluzione, tutti i riferimenti specifici MVC saranno presenti e, a causa di ciò, non è necessario distribuire MVC su quei server specifici.

Vorrei anche aggiungere che ogni volta che aggiungi un riferimento specifico al tuo progetto in Visual Studio, imposta la sua proprietà "Copia locale" su TRUE in modo che il riferimento sia sempre parte della soluzione finale e salverà dai guai in futuro.

+0

Ottima risposta. Questo è molto importante per MVC4 poiché Aggiungi distribuibili Dipendenze è stato rimosso dal VS 2012. – Joe

6

È non hanno più l'opzione "Aggiungi dipendenze schierabili" in Visual Studio 2012. Quindi dovrete farlo manualmente, da bin distribuire tutte le assemblee MVC:

Microsoft.Web.Infrastructure 
System.Web.Helpers 
System.Web.Mvc 
System.Web.Razor 
System.Web.WebPages 
System.Web.WebPages.Deployment 
System.Web.WebPages.Razor 

un passo per passo guida è trovata here.

+2

Sì, non vedo la scelta "Aggiungi dipendenze schierabili" sia in VS2015. –

Problemi correlati