maggio 2007 Blog Posts
Un interessantissimo esempio di codice, disponibile per Visual Basic e Visual C#, è disponibile al seguente indirizzo su Channel 9 di MSDN: http://channel9.msdn.com/ShowPost.aspx?PostID=306887
Si tratta di uno screen saver che fa comparire una sequenza di immagini presenti sul computer, a mò di foto polaroid :-)
Scritto secondo la filosofia Coding4Fun, questo esempio di codice si adatta perfettamente all'utilizzo nelle edizioni Express di Visual Studio.
Alessandro
Molti di voi avranno sentito parlare di Microsoft FxCop, uno strumento gratuito di analisi degli assembly .NET, la cui finalità è quella di rilevare codice non aderente alle Common Language Specifications di Microsoft e di suggerire adeguate soluzioni al fine di rendere gli assembly più efficienti. Grazie alle funzionalità dell'IDE di Visual Studio 2005 e le relative edizioni Express, è possibile avviare l'analisi dell'assembly su cui si sta lavorando senza dover aprire FxCop e specificare manualmente l'assembly da analizzare. Si procede in questo modo: dal menu Strumenti, selezionate il comando "Strumenti esterni". Quando appare la finestra, configuratela come nella figura...
Su Channel9 di MSDN, è possibile guardare un video che spiega come, grazie alle nuove integrazioni di Visual Studio Tools for Office, sia possibile interagire con i progetti VBA da codice gestito in .NET.
Purtroppo è disponibile solo in inglese, se non altro è una buona introduzione ad una valida caratteristica di Orcas che sarà di sicuro interesse per coloro i quali finora hanno utilizzato Visual Basic for Applications. Vi lascio il link, che è il seguente: http://channel9.msdn.com/Showpost.aspx?postid=306413
Alessandro
Coloro i quali hanno iniziato ad utilizzare Windows Vista avranno sicuramente preso familiarità con una simpatica funzionalità, cioè quella dei Gadget. Ogni gadget è una sorta di piccola applicazione che svolge un determinato compito, spesso utilizzando internet. A titolo di esempio c'è il gadget sul meteo, quello sui feed rss dei titoli e uno che trovo molto utile, il blocco di "post-it" per annotare appunti.
E' possibile creare i propri gadget personali utilizzando JavaScript. La cosa molto interessante è che i gadget possono eseguire codice gestito, anche se con qualche sforzo in più. Per imparare come si fa, potete leggere questo...
Per gli amanti del linguaggio Pascal, segnalo l'uscita di una nuova release di Chrome (prodotto da RemObjects Software), il Pascal ad oggetti per .NET Framework 1.1/2.0.
La release 1.5.9.731, uscita il 20 aprile 2007, è disponibile come di consueto nell'edizione free a riga di comando o nelle edizioni integrabili con Visual Studio .NET/2005 (a pagamento).
Questo l'indirizzo del sito del produttore: http://www.remobjects.com/index.asp
Alessandro
Lo dico onestamente, questa non la sapevo e vi spiego come l'ho trovata, ma dopo.
In un articolo della Knowledge Base di Microsoft, viene illustrato del codice sorgente (disponibile sia per Visual Basic 2005 che per C#) per estendere il controllo RichTextBox di .NET 2.0. Si parla, in pratica, di come stampare il contenuto di una RichTextBox creando un controllo utente chiamato RichTextBoxPrintCtrl che eredita proprio da RichTextBox.
Ne sono venuto a conoscenza leggendo questo articolo su VbDotNetHeaven, in cui viene illustrata la creazione di una sorta di Word Processor che utilizza le funzionalità di questo controllo utente. Il codice dell'articolo è...
In un precedente post ho segnalato la disponibilità di un code snippet realizzato da Microsoft per creare, da codice Visual Basic 2005, file .vscontent (destinati ad essere inclusi nei pacchetti .vsi - Visual Studio Content Installer) per l'installazione di code snippet su altri computer.
Poichè il motore di Visual Studio Content Installer consente anche l'installazione di macro, add-in e modelli di progetto, oltre che code snippet, ho realizzato altrettanti code snippet per raggiungere questo obiettivo, sempre da codice Visual Basic.
Ricordo che un file .vscontent può contenere simultaneamente diversi tipi di contenuto, quindi potreste modificare il codice per prevedere, in un solo blocco,...
Ovviamente le vecchie abitudini di XP sono dure a morire.. e così con Vista capita di doverle cambiare!
Dovevo rimuovere un assembly dalla GAC di Windows Vista e, essendo amministratore, cercavo di farlo da Esplora Risorse (aprendo la cartella C:\Windows\Assembly) ottenendo, in risposta, un bel messaggio di errore.
Mi sono ricordato che sul sistema è attivato l'User Access Control, quindi ho avviato Esplora Risorse facendo click destro sul suo collegamento e selezionando "Esegui come amministratore" dal menu contestuale.
Così facendo, sono riuscito a rimuovere l'assembly dalla GAC senza inconvenienti. Lo so che l'UAC si può disabilitare, ma finchè non ho piena padronanza...
Non so se vi è mai capitato, ma a me serviva di determinare via codice la presenza sul computer di più versioni del .NET Framework, a partire dalla 1.0.
Per farlo, ho utilizzato il namespace My verificando il contenuto di apposite chiavi di registro, come nel codice seguente:
Sub Main()
Dim Value As String = ""
'Leggendo il valore dell'apposita chiave di registro è possibile determinare l'installazione
'del .NET Framework
'Rileva la v. 1.0
Value = My.Computer.Registry.LocalMachine.GetValue("Software\Microsoft\.NETFramework\Policy\v1.0", "3705")
If Value = "3705" Then
Console.WriteLine(".NET Framework 1.0 rilevato")
Else
Console.WriteLine(".NET Framework 1.0 non rilevato")
End If
Value = ""
'Rileva la v. 1.1
Value =...
Un nuovo stile grafico per il sito universale di MSDN, che mi è piaciuto molto e tiene gli occhi più svegli grazie ai colori vivaci! ;-) La versione localizzata in italiano del sito, invece, ancora riveste il vecchio stile.
Non a caso, si chiama Msdn2: http://msdn2.microsoft.com
Alessandro
Se siete interessati all'utilizzo di Microsoft SandCastle per generare la documentazione compilata dei vostri sorgenti (illustrato, tra l'altro, nel mio libro), potrebbero tornarvi utili i video e le slide realizzate dal grande Rob Chandler in un summit per MVP e dedicati, per l'appunto, all'utilizzo di SandCastle.
Potete scaricare il tutto (due video e una presentazione PowerPoint) a questo indirizzo: http://picasaweb.google.com.au/robert.w.chandler/SandcastleVideo?authkey=sUo23QwaU-c
Alessandro
In un precedente post parlammo di come in Windows Vista non sarebbe stato incluso il servizio a 32 bit (WinHelp32.exe) destinato alla visualizzazione dei vecchi file in formato .hlp della guida di Windows.
Gironzolando in area download di Microsoft, ho trovato questo link e così, incuriosito, ho fatto qualche altra ricerca su internet scoprendo che Microsoft ha deciso di rilasciare un installer in grado di aggiungere a Windows Vista anche il grande escluso WinHelp32.exe; non so per quale motivo abbia deciso di farlo, presumo per motivi di compatibilità con applicazioni che usano questo formato di help.
Potete quindi scaricare e installare sul vostro...
Il tema "pacchetti di installazione" è sempre molto spinoso, creare una procedura di installazione intuitiva per un proprio programma non è sempre immediato, soprattutto perchè gli strumenti di authoring sono spesso difficili da personalizzare a seconda delle proprie esigenze.
Se per tale finalità utilizzate Visual Studio 2005 e i suoi progetti di distribuzione, e volete personalizzare la procedura guidata, potete personalizzare le vostre installazioni con nuove finestre di dialogo "custom". Come? con pulsanti, caselle di testo e combobox, di cui poi potete leggerne il valore.
Questo articolo su CodeProject si propone, e ci riesce in modo piuttosto semplice, di illustrare la creazione...
Ho il piacere di annunciare, per conto di Visual Basic Tips & Tricks, che nell'Area Download del sito è possibile scaricare un archivio contenente tutte le Tip pubblicate finora per Visual Basic .NET e Visual C# e rese disponibili sotto forma di pacchetto Visual Studio Content Installer in modo che possiate averle a disposizione come code snippet direttamente in Visual Studio 2005 (comprese le edizioni Express), richiamando i frammenti di codice con l'Intellisense!!!
L'archivio contiene due pacchetti, uno per Visual Basic e uno per C#. Vi sarà sufficiente fare doppio click su ciascuno dei file per avviare l'installazione guidata. In questa fase...
In .NET, il controllo ListView ha una proprietà chiamata MultiSelect che, se impostata su True (impostazione di default), permette di selezionare più elementi dell'elenco, ad esempio premendo il tasto CTRL e facendo click sull'elemento da selezionare.
Per eliminare dall'elenco tutti gli elementi selezionati, è possibile utilizzare un ciclo For..Each come segue:
'Supponendo di avere un controllo chiamato ListView1 che contenga almeno un elemento
For Each item As ListViewItem In ListView1.Items
If item.Selected = True Then ListView1.Items.Remove(item)
Next
Alessandro
Immagino che coloro che utilizzano Visual Studio 2005 o le singole edizioni Express sappiano cosa siano i code snippet, ossia frammenti di codice riutilizzabili che, con l'edizione 2005 dell'IDE, sono raggiungibili e utilizzabili direttamente dall'editor di codice grazie all'intellisense.
La creazione di code snippet ridistribuibili avviene mediante la realizzazione di file .vsi, che a loro volta contengono gli elementi da installare e un file xml, con estensione .vscontent, che contiene l'elenco degli elementi da installare (snippet, macro, add-in ecc.).
Bene, Microsoft ha realizzato un code snippet che, da codice Visual Basic 2005, è in grado di creare il file .vscontent. Il codice va...
Nel blog di Vincenzo Cosenza viene pubblicata una statistica sulle community italiane dedicate allo sviluppo su tecnologie Microsoft.
E udite udite.. Visual Basic Tips & Tricks è al secondo posto grazie ai suoi 32.000 iscritti!! E' davvero una grande soddisfazione poter vedere una grossa parte del grafico a torta dedicata al nostro amato sito!
Un grazie a tutti coloro che quotidianamente ci seguono e a coloro che, con la loro passione e il loro impegno, hanno permesso il raggiungimento di cotanto risultato! Uno speciale ringraziamento va a Gianluca Cannalire, per l'impulso impresso alla nostra Community.
Beh, però non possiamo mica fermarci... il primo...
Poichè nei miei test mi capita sovente di installare/disinstallare assembly nella Global Assembly Cache di .NET, mi ero un po' stufato di dover ogni volta ricorrere al prompt del DOS e digitare lunghe righe di comando per utilizzare GacUtil.exe.
Così ho realizzato questa piccola applicazione Windows Forms, che funge da interfaccia grafica per GacUtil.exe, l'utilità di installazione/rimozione assembly di .NET Framework SDK, chiamata WinGac e basata su .NET Framework 2.0.
In questo modo è possibile, grazie a pochi click di mouse, installare uno o più assembly contemporaneamente nella GAC, specificando anche la versione di .NET Framework che intendete utilizzare.
Si tratta di...
Siete interessati a creare i vostri componenti personalizzati per Visual Studio 2005 o a sapere come è possibile estendere le funzionalità dell'ambiente di sviluppo scrivendo del codice?
Microsoft mette a disposizione una serie di video relativi a quella fenomenale caratteristica dell'IDE chiamata "Visual Studio Extensibility", che si possono guardare o scaricare a questo indirizzo: http://msdn2.microsoft.com/en-us/vstudio/aa700829.aspx
Si tratta di video davvero molto interessanti, se volete approfondire tecniche di programmazione .NET orientate all'IDE.
Alessandro
Torno ancora sull'argomento relativo ai problemi di protezione riscontrati nello sviluppo di add-in per Windows Live Messenger con i linguaggi .NET; in particolare, sul discorso relativo all'impossibilità di leggere/scrivere file dall'add-in, di cui parlammo in un precedente post.
Ho provato a fare delle prove sia utilizzando l'IsolatedStorage, sia utilizzando le classi del namespace System.Security, per richiedere i permessi necessari da codice, ma senza successo.
Mi sono consultato con l'amico Rudy Azzan, profondo conoscitore di .NET Framework e che ringrazio, col quale abbiamo convenuto che l'unico modo per risolvere il problema è quello di installare l'add-in nella Global Assembly Cache.
In particolare Rudy suggerisce che l'alternativa sarebbe quella...
Chi di voi è passato per VB T&T avrà notato la pubblicazione in data odierna di un mio nuovo articolo, dal titolo "Interagire da codice con Microsoft Document Explorer". Un articolo che, prendendo a base la possibilità di interagire da codice VB .NET con l'Help di Visual Studio 2005, mostra tecniche di programmazione alla base del concetto di Visual Studio Extensibility.
E' con altrettanta soddisfazione che vedo pubblicato lo stesso articolo, scritto sempre da me in lingua inglese, sul sito Helpware.net, gestito da Rob Chanlder (Microsoft Help MVP) e uno dei più importanti siti al mondo in materia di produzione della guida...
Questo 300simo (!) post espone un piccolo suggerimento. Quando in .NET si istanziano oggetti esposti da librerie e/o componenti COM, è bene rilasciarli esplicitamente utilizzando il metodo ReleaseComObject della classe Marshal, appartenente al namespace System.Runtime.InteropServices.
Tipico è il caso in cui referenziate una libreria dei tipi COM in un progetto .NET. Supponendo di avere il seguente oggetto:
Dim myObject As New ComObject 'Dove ComObject è il tipo esposto dalla libreria COM
per "distruggerlo", oltre che assegnargli valore nullo, lo si rilascia esplicitamente come nel codice che segue:
'Presuppone una direttiva Imports System.Runtime.InteropServices
Marshal.ReleaseComObject(myObject)
myObject = Nothing
Questa procedura è prevista anche nelle Common Language Specifications di Microsoft.
Alessandro
E' stata rilasciata una patch per le edizioni Express della Beta 1 di Visual Studio "Orcas" (Visual Basic e C#), che permettono a questi due linguaggi di creare applicazioni basate su Windows Presentation Foundation.
Si tratta di due file eseguibili molto leggeri, circa 100 Kb cadauno. Vi lascio il link a questo blog su MSDN, dove potete leggere qualcosa di più e scaricare le due patch.
http://blogs.msdn.com/johnmont/archive/2007/04/26/wpf-patches-for-vb-and-vc-express-ready.aspx
Alessandro
Vi è mai capitato di voler aggiungere il controllo del lettore di Windows Media Player nelle vostre applicazioni Windows Forms? Bene, in questo post vediamo come si fa (dedicato ai meno esperti). In primo luogo una piccola spiegazione "tecnica", che vi tornerà utile per utilizzare anche altri controlli ActiveX in .NET. Il controllo relativo al lettore di Windows Media Player, quello ad interfaccia grafica che permette di riprodurre i file, per intenderci, risiede nella libreria WMP.Dll ed è un controllo ActiveX. Questa libreria è di tipo COM, quindi, per poter essere utilizzata in applicazioni .NET, è necessario generare gli appositi...
Vi ricordate di MSDN Community Content, ossia della nuova versione di MSDN grazie alla quale è possibile estendere gli argomenti esposti inserendo i propri trucchi e le proprie esperienze? Ne parlammo poco tempo fa qui.
Per darvi un'idea ancora migliore, volevo mostrarvi questo mio (primo) inserimento, a riguardo del discorso dei permessi di cui necessitano gli add-in per Windows Live Messenger.
Eccolo qua: http://msdn2.microsoft.com/en-us/library/bb331572.aspx
Unici vincoli richiesti: avere un account Passport .NET e l'accettazione dei termini per la pubblicazione di contenuti aggiuntivi.
Alessandro
Ancora un progetto open-source ospitato su CodePlex, di indubbia utilità, chiamato SharpObfuscator.
Come molti di voi sanno, decompilare un assembly .NET è (relativamente) semplice grazie alle tecniche offerte dalla Reflection. Per rendere complicata la vita a persone poco simpatiche che vogliono decompilare i vostri eseguibili, anche risalendo al solo codice IL, una delle tecniche più utilizzate è quella dell'Obfuscation, ossia quella tecnica che rielabora il codice IL di un assembly rendendolo incomprensibile alla lettura. SharpObfuscator fa proprio questo; si occupa, quindi, di proteggere i vostri assembly da tentativi di decompilazione non autorizzata ed è totalmente gratuito.
Potete scaricarlo qui: http://www.codeplex.com/SharpObfuscator tenendo sempre conto del fatto che...
Mi sembra proprio un bel progetto, questo "SDock" ospitato su CodePlex.
Si tratta di un progetto open-source, che implementa controlli utente per la realizzazione di finestre ancorabili, come quelle dell'IDE di Visual Studio per intenderci. Detti controlli sono scritti interamente in C# e potrete scaricare sia i file compilati che i sorgenti. Potete dare un'occhiata a questo indirizzo, senza spaventarvi per le preliminari scritte in giapponese ;-) basta scorrere la pagina per trovare una descrizione nel più familiare inglese!
Eccolo: http://www.codeplex.com/sdock
Alessandro
Poco tempo fa, in questo precedente post, abbiamo illustrato come creare ed utilizzare componenti aggiuntivi per Windows Live Messenger tramite codice Visual Basic 2005.
Se avete voglia di leggere i commenti al vecchio post, noterete che qualcuno, nel personalizzare il codice implementando la lettura di un file di testo, ha incontrato un inconveniente: nel momento in cui si cerca di accedere a un file, il componente aggiuntivo non viene caricato o viene sollevata un'eccezione di tipo System.SecurityException.
A questo punto sono andato a documentarmi un po' su internet. Ho scoperto, e devo ammettere che non lo avevo fatto prima, che i componenti aggiuntivi per Windows...
Ho installato la Beta 1 di Visual Basic "Orcas" Express e così vi volevo rendere partecipi di queste prime impressioni.
L'installazione è stata piuttosto lunga, a dire il vero. E' altrettanto vero che i componenti da installare non sono pochi. Il setup installa il .NET Framework 3.5 Beta 1 (e richiede il riavvio del sistema), Visual Basic Express, la libreria MSDN Express e permette di installare anche SQL Server 3.5 Compact, ossia una forma di SQL "in piccolo" dedicata sia allo sviluppo desktop che mobile.
Una volta in esecuzione, Visual Basic Express si presenta grosso modo come la versione 2005. Tenendo conto...
Finalmente è stato reso disponibile a tutti il download della Beta 1 della prossima edizione di Visual Studio, identificata dal codice "Orcas"!!
Con immenso piacere, tra l'altro, ho visto che si possono scaricare anche le edizioni Express dei singoli linguaggi.
Questi sono i link per il download:
Visual Studio "Orcas" Beta 1 Professional
Visual Studio "Orcas" Beta 1 - Express Editions
Al momento ho avviato il download di VB Express e sono circa 840 megabytes... e ci sono problemi, credo dovuti all'intasamento. ;-)
Per avviare il download è necessario avere un account Passport .NET. Grande!
Alessandro
Vi volevo segnalare questo interessante articolo pubblicato in lingua italiana su MSDN, che spiega come, grazie ad alcuni componenti del .NET Framework 3.0, sia possibile sviluppare applicazioni per Windows Media Center in Windows Vista, il tutto tramite Windows Presentation Foundation e sintassi XAML.
L'articolo è corredato da numerose immagini e spiega come pervenire all'obiettivo utilizzando Visual Studio 2005. Potete trovarlo qui:
http://www.microsoft.com/italy/msdn/risorsemsdn/windowsvista/mediacenter.mspx
Alessandro
Il team di sviluppo della libreria MSDN ha sviluppato un tool piuttosto utile, chiamato PackageThis!, in grado di esportare singoli contenuti della libreria MSDN (o di altre guide integrate nell'insieme delle guide di Visual Studio 2005) in formato .Chm o .HxS. PackageThis! è un progetto open-source, scritto in C#, ospitato sul sito CodePlex. Una volta in esecuzione, PackageThis! mostra una treeview contenente la struttura di tutta la documentazione installata, offrendo la possibilità di selezionare i singoli contenuti da esportare, come nella figura di esempio che segue, che ho catturato durante una prova: Quando avete selezionato i contenuti di...
Per associare una estensione di file alla propria applicazione, ad esempio per fare in modo che i file con tale estensione vengano aperti con la propria applicazione quando si fa doppio click su di essi, con Visual Basic 2005 e .NET 2.0 sono sufficienti due sole righe di codice:
'Presuppone una direttiva Imports Microsoft.Win32
My.Computer.Registry.ClassesRoot.CreateSubKey(".ext").SetValue("", "MyFileType", RegistryValueKind.String)My.Computer.Registry.ClassesRoot.CreateSubKey("MyFileType\shell\open\command").SetValue("", Application.ExecutablePath " ""%l"" ", RegistryValueKind.String)
In questo snippet, .ext è l'estensione del file da associare, MyFileType è una descrizione del tipo di file (ad esempio nei file di testo corrisponde a txtfile), RegistryValueKind.String indica che il tipo di dato del valore specificato è una stringa.
Aggiungendo lo...
Si succedono con frequenza le apparizioni di nuovi controlli utente per .NET sullo stile di Office 2007... questa volta ve ne segnalo un altro tratto da CodeProject, peraltro molto molto bello e ben fatto, per la creazione di oggetti simili al "riquadro delle attività" di Office.
Presuppone la presenza sul pc dei controlli utente del progetto Ascend .NET, di cui parlammo in un precedente post, e ospitati su CodePlex.
L'articolo, il codice a corredo e una demo si trovano qui: http://www.codeproject.com/useritems/MSOfficeTaskPane.asp
Alessandro