.NET
Nelle ultime settimane mi sono imbattuto in tre features di Visual C++ Express. Sono caratteristiche poco "appariscenti", sulle quali sarebbe sprecato fare marketing, ma che si sono rivelate particolarmente utili.
1. E' possibile aprire vecchi progetti per Visual C++ 6. La procedura di conversione è pressochè indolore. Naturalmente, a causa degli allineamenti agli standard C++, è possibile che il nuovo compilatore generi messaggi di avviso, indicando che vengono usati costrutti sintattici deprecati.
2. Durante l'apertura di un file, l'editor rileva automaticamente se la convenzione di terminazione linea è consistente e, in caso contrario, propone un allineamento con lo standard per Windows, Unix o Macintosh.
3. Per impostazione definita i file...
E' stato rilasciato NUnit 2.2.3, una nuova "iteration release", che include significative correzioni di bugs e nuove asserzioni. E' possibile leggere le release notes e scaricarlo a questo indirizzo. Sebbene sia stato compilato con Visual Studio 2003, funziona sul runtime di .NET 2.0. In realtà, anche con le versioni precedenti di NUnit, previa modifica del file di configurazione, non ho riscontrato problemi. La buona notizia è che, passando una semplice opzione a linea di comando, è ora possibile eseguire NUnit su una qualunque versione del framework disponibile sulla macchina. Altrimenti, per testare assembly creati con Visual Studio 2005, è sufficiente decommentare la sezione "startup" del file di configurazione "nunit-gui.exe.config". Happy testing! :)
Vediamo il seguente codice. Viene definito un
reference type (typeid = Person), con un metodo publico,
ReadMessage. Al suo interno viene utilizzato in tre modi diversi un
oggetto di tipo System::IO::StreamReader, classe che implementa
System::IDisposable.
public ref class Person{public: Person (String^ name, String^ surname) { } void ReadMessage (String^ path) { Stream^ stream = (Person::typeid)->Assembly->GetManifestResourceStream (path);#ifdef MANUAL_DETERMINISTIC_CLEANUP // I manually call the distructor. StreamReader^ reader = gcnew StreamReader (stream); Console::WriteLine (reader->ReadLine ()); delete reader;#endif#ifdef AUTOMATIC_CLEANUP // Garabace collector will call the dispose methods before finalizing the reader. StreamReader^ reader = gcnew StreamReader (stream); Console::WriteLine (reader->ReadLine ());#endif#ifdef AUTOMATIC_DETERMINISTIC_CLEANUP // The compiler automatic inserts a method call to dispose. // The reference type instance has value semantic in this context. StreamReader reader (stream); Console::WriteLine (reader.ReadLine ());#endif }};
Decompiliamo con Reflector e
vediamo come apparirebbe, nei diversi casi, il metodo
ReadMessage se fosse scritto in C#.
Nel primo caso reader è stato dichiarato come un handle, al
quale abbiamo è stato assegnato un oggetto allocato sul managed
heap tramite l'operatore gcnew
. Dopo essere stato utilizzato, l'oggetto viene "distrutto" con l'operatore
delete. Tale
operatore viene sostanzialmente ...
Ispirato e istruito dalla sessione di Andrea, spero di poter iniziare questa settimana questo piccolo progetto.
Si tratta innanzitutto di creare uno script per la creazione del database e poi codare il membership provider.
Appena lo comincio apro un nuovo workspace su GotDotNet!
Ho deciso di spostare il progetto su GotDotNet. Pubblicherò lì news (con feeds RSS!), nuove releases, etc.. Ci sono anche un forum e un bug tracker, che naturalmente potete utilizzare.
Ho già pubblicato le due "vecchie" releases (0.6 e 0.7.0) e i sorgenti sfruttando il sistema di source control (integrato tramite plugin in Visual Studio!).
Ora vorrei creare un installer (in bundle con l'Enterprise Library e il provider ADO.NET per Firebird). Devo soltanto trovare il tempo di leggere le licenze e realizzarlo.
Putroppo non sono ancora riuscito a fare una pagina di redirect sul vecchio sito perchè ho dimenticato la password... troverò un sistema per farlo (spero!).
Nome...
Condividendo le opinioni di Andrea in merito all'inclusione nei soli prodotti Team System degli strumenti per lo unit testing, volevo ora portare il ragionamento un po' oltre.
Per quale motivo tutte queste versioni di Visual Studio? Probabilmente ci avrete già pensato: perchè non rilasciare una piattaforma, che potremmo chiamare "Visual Studio Foundation", e poi tutti i plugin del caso, acquistabili separatamente e in ogni momento? Insomma un modello àla Eclipse o Netbeans...
Immaginate di avvicinarvi alla programmazione in ambiente Windows. Ad oggi, probabilmente su consiglio di qualche amico, compreresti uno dei prodotti express, diciamo C# Express. Se non avete mai fatto unit...
Se state usando Visual C++ 2005, vi sarete probabilmente accorti che l'ambiente non è ancora del tutto completo. Esistono alcune limitazioni nella gestione del progetto (file di risorsa, file di soluzione, etc.). Non so se queste rimarranno limitazioni del prodotto Express definitivo, ad ogni modo potete ovviare a questi problemi scrivendo manualmente il file di progetto e vcbuild.exe per compilarlo. Qui potete trovate lo schema XML:
http://msdn2.microsoft.com/library/y4sy8216(en-us,vs.80).aspx
Il designer è decisamente migliorato, tuttavia, a mio parere, genera un pessimo codice. Sarebbe stato importante, per lo meno, che separasse le implementazioni dei metodi (in particolare, del costruttore e dei delegati che gestiscono gli eventi) dalla...
Un'ottima introduzione (e dimostrazione) da parte di uno dei software architect che lo hanno ideato:
http://channel9.msdn.com/ShowPost.aspx?PostID=56397
42 minuti circa
Uso NUnit con discreta soddisfazione, ma mi chiedevo se qualcuno di voi abbia provato i due progetti open-source "concorrenti".
Non ho molto tempo attualmente per provarli, qualcuno che li ha già usati sa darmi un parere?
Ho effettuato qualche piccola modifica al pacchetto.
Grazie ad Alessandro Petrelli per le sue correzioni sullo script sql per la creazione del database
Northwind.
Dal changelog:
5th April 2005 - version 0.7.0 released
* License changed into LGPL * Cleaned up
"bin" and "obj" directories from some files which were used during the
initial development process
* Minor changes to "NorthwindForFirebird.sql" (thanks to
Alessandro Petrelli)
* Minor changes to "Readme.txt"
* Added "Changelog.txt" * Version changed
...
Full .NET Archive