2014-05-01 15 views
10

ho seguito this articolo per rendere il plug asp.net mvc4 applicatonCome distribuire asp.net MVC 4 applicazione avere più aree

Ma di fronte a problemi durante la distribuzione dell'applicazione. Nella mia soluzione MainProj è il progetto principale, dove tutti gli altri progetti si trovano nella cartella area. Ogni progetto ha il suo modello, vista e controller. Ho fornito i riferimenti di tutti i sottoprogetti (progetti nella cartella di area) nel MainProj. Ora, quando si tenta di distribuire MainProj, la sua unica pubblicazione del progetto principale con le sue viste (in questo caso MainProj), i progetti nella cartella area non vengono implementati (es: Cart, CRM). Anche se aggiungo riferimenti dei progetti nell'area (ex CRM) nei progetti principali (MainProj), solo il ddl dei progetti nell'area (ex CRM) viene distribuito nella cartella bin, nessuna vista del progetto nelle aree (CRM) essere schierato. Cosa sta andando storto.

Ecco la struttura della soluzione:

enter image description here

Qui è la mia struttura di cartelle originale.

enter image description here

Tuttavia quando eseguo il mio progetto nella modalità di debug all'interno di Visual Studio, l'applicazione è in esecuzione perfettamente bene. Così ho fatto clic sull'icona di iis express nella barra delle applicazioni nella parte inferiore dello schermo e ho osservato che lo studio visivo ospita diversi siti per ogni progetto.

enter image description here

risposta Un po 'simile trovato here, ma non funziona nel mio caso. Per favore fatemi sapere cosa mi manca o che faccio male. Qual è il modo corretto di distribuire tale applicazione. Grazie in anticipo.

risposta

3

Finalmente risolto il problema. Aggiunti riferimenti a tutti i progetti all'interno della soluzione nel MainProj. Quindi è stato distribuito il progetto principale (MainProj) nella cartella pubblica. Così la directory diventa la seguente:

  • Pubblica
    • MainProj

Poi create manualmente cartella "Aree" Nel pubblicare cartella

  • Pubblica
    • MainProj
    • Aree

Poi cartella creata manualmente per ogni progetto nella zona all'interno "Aree" cartella:

  • Pubblica
    • MainProj
    • Aree
      • Carrello
      • CRM
      • ....
      • ....
      • Admin
      • cliente
      • StoreFront

Infine distribuire manualmente (pubblicato) ciascun sottoprogetto (progetti all'interno dell'area) all'interno delle rispettive cartelle uno per uno. Ex. CRM è distribuito nella cartella CRM.

Questo è il ... La mia app funziona perfettamente.

Creato profilo di pubblicazione per ogni progetto, ora posso solo distribuire qualsiasi progetto nella rispettiva posizione in qualsiasi momento, consentendo a ciascuno sviluppatore di lavorare in modo indipendente su ogni singolo progetto e distribuire il proprio progetto (modulo) all'ambiente di pubblicazione per posizione specificata senza alcuna dipendenza.

+0

Hai trovato un altro modo per includere quelle cartelle di aree nel pacchetto pubblicato? Per favore rispondi. –

+0

@ Yoda Non ancora. Questo è l'unico modo che ho trovato. Quale problema stai affrontando con questo approccio? –

0

Aprire il progetto principale CSPROJ e trovare questa linea

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
<DebugType>pdbonly</DebugType> 
<Optimize>true</Optimize> 
<OutputPath>bin\</OutputPath> 
<DefineConstants>TRACE</DefineConstants> 
<ErrorReport>prompt</ErrorReport> 
<WarningLevel>4</WarningLevel> 
<Prefer32Bit>false</Prefer32Bit> 

e aggiungere la seguente riga dopo il nodo Prefer32Bit

<FilesToIncludeForPublish>AllFilesInProjectFolder</FilesToIncludeForPublish> 

salvare e pubblicare.

0

Seguire la risposta di Saurabh Palatkar e quindi per distribuire automaticamente la cartella Aree con tutte le viste aggiunte a csproj.

Fuori dal VS, aprire il master.file csproj e aggiungi il seguente XML all'interno e alla fine del progetto. (Questo è poco prima della chiusura/Progetto).

<Target Name="CustomDeployAreas"> 
    <ItemGroup> 
     <AreasFiles Include="$(MSBuildProjectDirectory)\Areas\**" /> 
     <FilesForPackagingFromProject Include="%(AreasFiles.Identity)"> 
      <DestinationRelativePath>Areas\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 
</Target> 
<PropertyGroup> 
    <CopyAllFilesToSingleFolderForPackageDependsOn> 
     CustomDeployAreas; 
     $(CopyAllFilesToSingleFolderForPackageDependsOn); 
    </CopyAllFilesToSingleFolderForPackageDependsOn> 
    <CopyAllFilesToSingleFolderForMsdeployDependsOn> 
     CustomDeployAreas; 
     $(CopyAllFilesToSingleFolderForPackageDependsOn); 
    </CopyAllFilesToSingleFolderForMsdeployDependsOn> 
</PropertyGroup>