ho ricordi molto sbiaditi, di quando frequentavo l'università di informatica, ma come come alcune cicatrici, alcuni concetti sono inderebili.
il professore di architettura degli elaboratori, era solito dire che è possibile programmare usando qualsiasi linguaggio, tutto sta nel vedere quanto sacrificio comporta...
dopo il mio post UserControl e MSBuild, nel fine settimana ho deciso di approfondire la conoscenza di MSBuild.
Se abbiamo usato una qualsiasi versione del Visual Studio 2005, anche senza saperlo abbiamo usato MSBuild è lui che si occupa di leggere le infomazioni contenute nel file *.(qualcosa)proj
e "orchestare" la costruzione del Software.
il formato del file di progetto è un semplice xml, facile da comprendere e da estendere.
alcuni elementi base del progetto sono:
Items:
solo l'elemteto di Imput per il processo di costruzione, sono raggruppare in una collezione definita dal nome stesso degli item, nel progetto vengono dichiarati come elmenti figlio di ItemGroup.
<ItemGroup> <CSFile Include="test MsBuilds.cs"/> </ItemGroup> <ItemGroup> <Reference Include="System.dll"/> </ItemGroup> all'interno del progetto è possibile accedere alla collezione di item tramite @(CSFile)
Task
i task sono le unità che si occupano di del processo di costruzione, sono scritte in codice gestito, possiamo implementare i nostri task personalizzati, scivendo una classe che implementi l'interfaccia ITask.
i task vengono eseguiti creandoli come elementi figlio del tag Target.
<Target Name="Build"> <Csc Sources="@(CSFile)" References="@(Reference)" OutputAssembly="$(MSBuildProjectDirectory)\$(MSBuildProjectName).exe" TargetType="exe" /> </Target>
in quesro caso il task da eseguire è l'esecuzione del compilatore C#.
$(MSBuildProjectDirectory) e $(MSBuildProjectDirectory) sono alcune proprietà riservate a MSBild,
possimao definire proprietà personalizzate; come per gli Items, le varie proprietà sono raggruppate in collezioni, definite dal nome stesso della proprietà.
nel progetto vinegono dichiarate come figli del tag PropertyGroup.
<PropertyGroup> <BuildDir>Build</BuildDir> </PropertyGroup>
i Targets raggruppano i Task, sono il punto d'entrata del processo di costruzione.
dopo tante parole aprimao il fido notepad e sciviamo una semplicissima (a dire poco) applicazione console.
using System; using System.IO; namespace Test { public partial class MyConsole { public static void Main(string[] args) { String name = Console.ReadLine(); } } }
sempre con il fido notepad creaimo il progetto MSBuild
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > <ItemGroup> <CSFile Include="test MsBuilds.cs"/> </ItemGroup> <ItemGroup> <Reference Include="System.dll"/> </ItemGroup> <Target Name="Build"> <Csc Sources="@(CSFile)" References="@(Reference)" OutputAssembly="$(MSBuildProjectDirectory)\$(MSBuildProjectName).exe" TargetType="exe" /> </Target> </Project>
lo salviamo assicuradoci che l'estensione sia *.proj
dal prompt dei comandi ci posizioniamo nella cartella che contiene il progetto e i file.
lanciamo MSBuild.exe ed il gioco è fatto, nella cartella troveremo l'applicazione prontà all'uso.
riallacciando al discorso iniziale, perche usare MSBuild, quando abbiamo la comoda iterfaccia del VS?
alcune volte perchè, semplicemente, non è importante dovre andremo, ma il tragitto che abbiamo percorso per arrivarci.
un esempio concreto, è utilizzate ILMerge (implementa l'interfaccia ITask) con compilare e riunire in un unico assembly gli UserControl, in modo da poterli riutilizzare con facilità
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Perfezioniamo il ProfileDataSorce, il 13 ottobre 2008 alle 11:14
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22