luglio 2004 Blog Posts
Paul Vick in questo blog svela come mai le versioni 2002 e 2003 di VB.NET non hanno le proprieta' con diverso livello di accessibilita' (opzione disponibile in VB e C# 2005).Il motivo: Perche' i progettisti di C#, a suo tempo, non hanno voluto inserirle... :-(
E' disponibile la versione "Code coverage" del .NET Framework 2.0 Beta1.Questa versione contiene un engine che controlla quali parti del .NET Framework state usando maggiormente e trasmette queste info ad un database centrale affinche' Microsoft, analizzando,possa ottimizzare e migliorare le parti del framework piu' utilizzate.
Vista la presenza di "+=" ci si domanda spesso perchè VB.NET non abbia il "++", Eric Lippert ne spiega il motivo .
Dopo la segnalazione di Matteo , per par-condicio credo valga la pena leggere la replica di Carl Franklin. :-)W .NET!
Scenario: Avete una classe, la quale ha un metodo che attraverso un thread (oppure usando un delegate e BeginInvoke, EndInvoke) svolge alcune operazioni asincrone, all'interno di questo thread volete generare degli eventi, e all'interno di questi eventi volete aggiornare l'interfaccia utente.Il problema sta nel generare l'evento nel thread principale per non costringere chi usa la vostra classe a usare ISyncronizeInvoke per effettuare il marshaling della chiamata.Ecco la soluzione:
Public Class Test '//Definisco l'evento Public Delegate Sub MyInvoker(ByVal Value As Int32) Public Event Progress As MyInvoker Private mThread As Thread
Public Sub DoItInAnotherThread() mThread = New Thread(AddressOf Count) mThread.Start() End Sub
Private Sub Count() '//Recupero il field associato al mio evento (NomeEvento+[Event]) Dim...
Direttamente dalla KB Microsoft... ;-)
http://support.microsoft.com/?kbid=261186http://support.microsoft.com/?kbid=178748 http://support.microsoft.com/?kbid=276304http://support.microsoft.com/?kbid=145675http://support.microsoft.com/?kbid=303969
Visto che sembra un problema molto 'sentito' ecco un componente (scritto in C#) che permette di aggiungere le funzionalita' di masterizzazione alla vostra applicazione .NET.Funziona solo con sistemi operativi XP e Windows Server 2003.
Sono ora disponibili i links per il download diretto delle versioni Express.
Ieri Raffaele ha mostrato come personalizzare i DataTips di Visual Studio 2005 usando gli attributi DebuggerDisplay e DebuggerBrowsable.Se vi venisse voglia di provarli, fatelo in C# per in VB 2005 non funzionano...
Qui trovate un add-in che permette di avere una shell DOS come dockable window di Visual Studio 2003/2005.
Anche il Whidbey Reloaded è andato "Sold out" e considerato che solo 6 erano le persone che avevano già partecipato al precedente Whidbey WorkShop direi che è stato un grande successo. La sala e Raffaele durante la sua sessione... Jay, Sean e Fabio alle prese col portatile...Dopo la sessione tenuta dai PM la sorpresa: Seppure con 3 giorni di anticipo abbiamo festeggiato il 3° compleanno di UGIdotNET, con relativa torta per tutti i partecipanti.
Serviva un beta tester, e Fabio Santini si è offerto volontario ;-)
A tutti i partecipanti è stata regalata la maglietta dell'evento... Ovviamente... XL! :-)
Visual Basic 2005 offre il supporto totale ai generics, questo malgrado tutti (Microsoft inclusa) stanno indicando My come la novita' principale della prossima versione.Purtroppo trovare documentazione sui Generics in VB 2005 e' piuttosto difficile (Io stesso me li sono studiati usando le specifiche C#...)Finalmente ecco un articolo sui Generics diretto allo sviluppatore VB.
Su GotDotNet e' stato publicato un tool per la generazione di un bootstrapper all'interno del quale inserire i prerequisiti richiesti dalla nostra applicazione.Sebbene parte di questa funzionalita' sia gia' presente all'interno di Visual Studio 2005 questo tool vi permette di editare in maniera semplice ed intuitiva i files xml richiesti per aggiungere un componente all'interno del bootstrapper.
Ecco i dettagli della versione iniziale:
Ability to create Bootstrapper Packages for Visual Studio 2005 (Beta 1)
Works on the .NET Framework SDK v2.0 (Beta 1)
Ability to create MSBuild project files for building a Boostrapper, and build them.
In questo blog Aaron Stebner indica come scaricare le versioni Express senza utilizzare il web downloader.
Quante volte vi siete ritrovati con parecchie tab di visual studio aperte e costretti a chiederne una per una in modo da visualizzare quella desiderata?Finalmente "Close All but this"!
A quanto pare C# Express e Visual C# 2005 sono praticamente identici a parte la mancanza nella versione Express di:
Source control
Add-ins
Class Designer
ClickOnce deployment
Remote debugging
Mobile development
Unit testing
Presumo che lo stesso valga per VB.NET...Considerato che, molto probabilmente, il prezzo delle versioni Express sara' irrisorio e che le versioni Express non avranno limitazione nel licensing delle applicazioni sviluppate, sicuramente avremo una nuova categoria di sviluppatori "Express".
PS: Non so come ma sono finito nella pagina dei "buzz" di Visual Studio 2005, potenza dei blogs! ;-)
Qui trovate uno zip file con tutti i membri considerati obsoleti nella Beta1 del .NET Framework 2.0
La mia ultima sessione è "Writing Faster Managed Code".Peter Sollich mostra come lo stesso algoritmo, scritto in C# e in C++, gira più velocemente grazie alle tecniche di ottimizzazione del jitter.Lo speech prosegue descrivendo (in maniera appastanza 'newbies') il funzionamento del GC, questo perchè conoscere il funzionamento del GC è fondamentale per chi vuole scrivere codice .NET ottimizzato ed evitare gli errori tipici: Boxing, usare GC.Collect,Finalization...Ottimizzare significa anche non abusare dei files XML e considerare la possibilità di usare files binari come pure non abusare nell'uso di Reflection.L'uso di COM Interop e P/Invoke è un altra area dove possono esserci...
Chi sviluppa applicazioni windows forms sa che prima o poi per evitare il freezing della UI bisogna ricorrre ai threads, quello che molti non sanno (putroppo) e che quando si usano Threads bisogna porre molta attenzione al come si utilizzano i controlli windows forms perchè questi non sono thread-safe e non a caso nel framework 2.0 verrà generata un eccezione.Juwal Lowy mostra come utilizzare i delegates per invocare metodi in maniera asincrona e dall'esempio appare come la tecnica richieda un sacco di codice per un operazione banale come aggiornare una progressbar da un thread separato.Per evitare questo dalla versione 2.0...
Scott Nonnemberg è stato chiaro: Abbiamo preso i vostri feedback e li abbiamo implementati nel debugger di VS 2005Problema : VS 2003 ha troppe finestre di debug, infatti nella nuova versione è possibile conoscere tutte le info reltive ad un oggetto/variabile semplicemente posizionando il mouse sopra la variabile e cliccando il "+" che appare nell'intellisense.L'intellisense attuale è poco chiara: Non si capisce se un metodo è statico o di istanza, ed ecco ch in VS 2005 abbiamo le icone e l'intellisense nella watch window.Attualmente la finestra di debug è piena di informazioni duplicate e/o inutili (es. framework internal data), in...
Altra sessione di Juwal Lowy, questa volta sulla CAS (Code Access Security) durante la quale lo speaker gioca col .NET Configuration Tool mostrando come modificare i livelli di sicurezza da applicare alle applicazioni .NET a seconda del proprio evidence.Il fatto di poter eseguire applicazioni in maniera 'sicura' anche se queste vengono da luoghi poco sicuri per definizione (Internet) è quello che sta alla base delle rich client application che con ClickOnce probabilmente avranno ruberanno un po di spazio alle applicazioni ASP.NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsse/html/sseoverview.asp
Io, Andrea e Lorenzo abbiamo avuto il piacere passare un ora in sessione 'privata' con Jay Roxe e Paul Yuknewicz, PMs di VB.NET
Abbiamo toccato discorsi interessanti e abbiamo anche riportato le lamentele che 'girano' tra i programmatori VB.Paul e Jay ci ha illustrato i piani di Microsoft per gli sviluppatori VB per i prossimi mesi e, se si realizzeranno, le novità faranno piacere a chi ha scelto VB.NET come linguaggio per la piattaforma .NET.Abbiamo avvisato Jay (è uno dei 2 PM che sarà al workshop del 8/7) di prepararsi perchè i partecipanti ai workshop UGIdotNET sono professionisti 'tosti' e lui non...
Una sessione leggera ed interessante, ogni tanto ci vuole...Con David Chappell nella veste di Maurizio Costanzo e altri nomi "importanti" (tipo Juwal Lowy e Clemens Wasters) nella parte degli ospiti, si è parlato dei vari "Miti" che circondano .NET.Tra questiVB.NET e C# sono la stessa cosa.I Web Services sono la panacea di tutti i problemi dei nostri clientiLe applicazioni Web sono più semplici da distribuire rispetto alle applicazioni Smar Client.UDDI è utilissimo!Il codice unmanaged è più veloce di quello managed.Quello che è emerso dalla discussione è che questi miti in realtà non esistono, o meglio, vanno analizzati in un contesto...
Dino inizia con uno spiritoso aneddoto sul fatto di cosa significa essere "Portoghese" in Italia (e voi capite che, da ieri, i Portoghesi sono poco simpatici qui in Olanda...) ADO.NET 2.0 è innovazione e non rivoluzione (e per chi ha un sacco di codice in ADO.NET 1.x è importante...)La feature preferita da Dino è RemotingFormat ovvero la possibilità di serializzare (veramente) in binario un dataset o datatable con un incremento di performance notevole (vedere sotto) e risparmi di CPU,Memoria e banda.
La Datatable ora implementa IXmlSerializable e tutti i metodi al momento presenti solo nel Dataset, questo significa che, essendo serializzabile...
La sessione di Juwal Lowy (sono sicuro che molti di voi lo conoscono) è stata interessante e ha trattato un argomento che ci tocca da vicino: "Versioning".
Si è parlato di private e public assemblies, come inserire le assemblies nella GAC (Drag&Drop, gacutil, .NET cfg tool) e come il .NET framework sceglie quale assembly utilizzare quando è presente sia localmente che nella GAC.carina la demo Binding Redirect e dell'opzione Codebase, che volendo ci permette di creare delle shared assemblies che non stanno sulla nostra macchina locale.Juwal ha mostrato un trick (al momento per C# only) per mettere nella GAC le nostre assemblies...
La giornata di oggi inizia con una sessione sul debugging:Spesso non ce ne rendiamo conto ma Visual Studio ha un supporto al debugging veramente notevole, e la versione 2005 lo migliorerà ulteriormente.Dopo una carrellata sui vari listeners (da usare con le classi Debug e Trace) viene analizzato come attivare/disattivare le opzioni di Tracing agendo sul file di configurazione.Viene sconsigliato l'uso di OutputDebugString (questa gener una SEH exception intecettata dal kerner e copiata allinterno di shared memory mapped files)StackTrace è un altra classe, spesso dimenticata che può esserci utile per localizzare la fonte di una determinata eccezione.Alcuni metodi/attributi che possiamo usare...