Domanda

Eseguo una soluzione per siti Web ASP.NET con alcuni altri progetti al suo interno.So che i progetti MSBuild sono in grado di farlo, ma è il modo migliore?Sono facili da creare?nAnt, CruiseControl.NET o qualsiasi altra soluzione è migliore?

Quando creo il sito (usando Progetti di distribuzione Web), posso automatizzare parte della build in modo che non copi determinate cartelle dal progetto nella cartella Release?Ad esempio, ho cartelle con indici di ricerca locale, immagini e altri contenuti che fanno parte della cartella, ma non ne ho mai bisogno né li carico durante la distribuzione del progetto.

Sto anche cercando questo tipo di soluzione per incrementare automaticamente i numeri di build e versione.

È stato utile?

Soluzione

Ecco un esempio di un progetto di distribuzione Web che crea script per questo tipo di attività nel file .wdproj:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

Ciò ti consentirebbe di eliminare una cartella.

(Sospetto che se non volessi copiare la cartella affatto, il file della soluzione sarebbe il posto dove specificarlo, anche se non ho dovuto usarlo.)

Altri suggerimenti

MaseBase, puoi usare Progetti di distribuzione Web per creare e confezionare siti Web.Lo facciamo sempre per progetti con un aspetto di applicazione web.Dopo aver assegnato un WDP a un sito Web, è possibile aprire il file .wdproj file come file XML di testo semplice.Alla fine è presente una sezione commentata di destinazioni MSBuild che rappresentano la sequenza di eventi che si attivano durante un processo di compilazione.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Puoi rimuovere il commento dai target che desideri (ad es."AfterBuild") e inserire lì le attività necessarie per svolgere le ripetute attività post-build.

È possibile impostare la proprietà Azione di compilazione/Copia nella directory di output su singoli file (selezionare il file e premere F4 per aprire la finestra delle proprietà) per controllare cosa accade loro durante la compilazione, ma non per le cartelle.Questo potrebbe probabilmente essere automatizzato con un'attività di (pre) compilazione se non vuoi farlo manualmente.

In alternativa, puoi escludere queste cartelle dal progetto (tasto destro e 'escludi dal progetto');saranno ancora presenti ("mostra tutti i file" in Esplora soluzioni), ma non verranno inclusi durante la creazione del progetto.

CruiseControl.NET risolve un problema diverso (integrazione continua) ...tuttavia, ho avuto un grande successo con NAnt proprio per quello che stai chiedendo.C'è una curva di apprendimento, ma una volta diventato esperto ti chiederai come hai fatto ad andare d'accordo senza di essa.

Oltre al suggerimento di @Fredrik sull'impostazione degli elementi del progetto su "Copia nella directory di output", puoi anche specificare un'azione post-compilazione nelle proprietà del progetto nella scheda Compila e includere comandi CMD come copy.exe e move.exe.

Usiamo FinalBuilder per automatizzare una serie di attività post-costruzione/pre-costruzione.C'è anche un'interfaccia web in modo da poter avviare build (o inviare siti Web) accedendo al sito Web e facendo clic su un pulsante.

http://www.finalbuilder.com/

Non puoi modificare il file MSBuild del progetto di distribuzione Web affinché faccia ciò che desideri?

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