Visual Studio
In Visual Studio 2005 accade a volte che il file .designer.cs non venga correttamente generato con i controlli contenuti nel markup della pagina. La memoria è corta, quindi me lo segno qui sul blog: per forzarne una rigenerazione, è sufficiente eliminare il file .designer.cs e poi fare tasto-dx sulla pagina, Convert to Web Application. Technorati tags: ASP.NET
C# 3.0 permette una notazione compatta per le proprietà che si limitano semplicemente a wrappare un corrispondente field: 1: public string Descrizione { get; set; }
Sulle prime mi è sembrata un'innovazione piuttosto utile, se non altro per le entity di dominio, che notoriamente non hanno logica e che risultano essere parecchio più veloci da scrivere e leggibili. Così utili che ho anche realizzato un accessor per farle supportare da NHibernate (lo trovate qui).
Poi ho iniziato a sperimentare un po' e... beh... mi convincono fino ad un certo punto. Perchè? Beh, ovviamente devono avere...
Come recita il titolo, è oramai una settimana che Orcas è divenuto il mio Visual Studio "ufficiale", dato che il multi-targeting sembra funzionare a dovere, dato che non è chissà quanto più pesante del 2005 e dato che per il momento i crash (fortunatamente) latitano. Resharper mi manca tanto, però, dannazione! Fortuna che almeno son riuscito a fargli digerire AnkhSVN che pare andare alla grande.
Alcuni web service che sto realizzando, usano come parametri e valori di ritorno dei tipi che implementano l'interfaccia IXmlSerializable. Il tool wsdl.exe utilizzato per generare i proxy per l'accesso lato client, ha un fastidioso bug descritto in questa KB: considera ogni tipo IXmlSerializable come se fosse un dataset e quindi produce metodi con signature errate. L'aspetto più antipatico della questione è che, stando sempre a quanto scritto nella KB che ho linkato, non c'è soluzione se non quella di andare a cambiare a manina ogni metodo incriminato. Uff, non vedo l'ora di migrare completamente a WCF!
Trovo che ReSharper rientri in quella categoria di tool che più o meno possono essere descritti con un "se ne può fare benissimo a meno, ma una volta provato non lo tiri più via!" (a meno di non essere alle prese con solution *veramente* grandi, in cui serve un mainframe per farlo girare). Bene... se non sapete neanche cosa sia, o se lo usate ma volete saperne di più, sappiate che Joe White ha iniziato una serie di 31 post, uno al giorno, in cui vi farà scoprire come mai dopo averlo installato non potrete più vivere senza!
Avvertenza: questo è un post autocelebrativo, Janky mi ha pagato profumatamente per scriverlo, quindi se vi farà venire il diabete prendetevela con lui. Windows Vista è quasi in RTM? Avete provato Orcas per la prima volta? Office 2007 lo usate già da un po'? Vi piace HappySign di Igor? STICA!!! Siete il nulla: sta per arrivare NHibernate Domain Mapper rel.0.1 alpha codename SUPERTANGA!! Ora, visto che un rilascio ufficiale non c'è ancora stato, purtroppo credo che difficilmente che ci sia qualcuno, oltre me e il bravo Sudano, in possesso di queste fantasmagoriche righe di codice C#. Tanto per dare un'ulteriore...
C'è un piccolo problemino con l'installazione di WSE 3.0
se si usa una versione di Windows differente da quella inglese. Visual Studio,
infatti, ricerca il plugin nel percorso
%ALLUSERSPROFILE%\Application
Data\Microsoft\MSEnvShared\Addins
mentre il setup di WSE 3.0 installa
l'add-in nel percorso
%ALLUSERSPROFILE%\Dati
Applicazioni\Microsoft\MSEnvShared\Addins
Il risultato è che, aprendo il menu
contestuale di un progetto di Web Service, non troviamo la voce "WSE
Settings 3.0..." per abilitare e configurare i WebService Enhancements per
quel progetto.
La soluzione è semplice, ma la posto qui
perché mi ha fatto perdere parecchio tempo; basta...
AnkhSVN, il client di Subversion per VS2005, alcune
volte ha bisogno di effettuare una pulizia delle cartelle di sistema tramite il
comando CleanUp.
Purtroppo spesso e volentieri, questo comando si lamenta perché in un qualche
subfolder di un remotissimo altro subfolder della structure della nostra
soluzione, non trova una fantomatica cartella tmp. E' un bug noto,
facilmente risolvibile creando una directory vuota nella posizione voluta, ma
capirete che è un discreto sbattimento farlo a mano, soprattutto quando le
cartelle mancanti sono diverse.
Bene, ho realizzato una piccola console application che fa tutto ciò da sola,
esplorando ricorsivamente tutte le cartelle.
Il codice è...
Già già, finalmente stasera (a tempo di record) hanno
attivato il progetto di NHibernate Domain Mapper su CodePlex. Per ora non abbiam messo su ancora
nulla, lo farò nei prossimi giorni, ma speriamo di riuscire ad approfittare
delle ferie per tirar fuori una prima early build, così potrete anche voi dare
un'occhiata a quello che, per me e Janky, è diventato
il passatempo di quasi ogni sera e ogni weekend.
Se poi ci volete dare anche una mano...
powered by IMHO 1.3
Oggi ho avuto una brutta sorpresa: lavorando con VS2005
ad un progetto WinForms, mi sono trovato nell'assoluta impossibilità di
impostare il DataBinding da designer: ogni volta che provavo ad impostare la
proprietà DataSource di un qualsiasi BindingSource, VS2005 sollevava una
NullReferenceException, mostrava una bella message box con su scritto "Reference
not set to an instance of an object" e buonanotte al secchio.
Pistolando un po' qua e là, alla fine sono riuscito a venirne a capo: si
tratta di un problema che si verifica quando si cambia il naming delle classi,
quando cioé i file Xml contraddistinti dall'estensione .datasource non
sono...
Come utilizzare VS2005 con Subversion? C.p.l.
Validare le vostre domain entities è sempre stato un
problema? Implementare constraints in maniera dichiarativa è il vostro sogno?
Benissimo... abbiamo quello che fa per voi!
Siore e siori... Validation Application Block 0.4
Il Validation Application Block grazie agli sforzi miei e di Andrea arriva alla
release 0.4 e, per l'occasione, migra su SourceForge. Le novità introdotte rispetto alla versione
precedente riguardano essenzialmente architettura e naming (già, naming,
purtroppo vi toccherà ritoccare qua e là il codice, se utilizzavate la 0.3), ed
in particolare:
Architettura: è stato aggiunto un supporto alle validation rules (per
il momento a livello embrionale e purtroppo...
Dopo un minuscolo Tip pubblicato qualche giorno fa (un altro è in arrivo!!),
oggi è uscito il mio primo articolo UGIdotNet-tiano! Riguarda la creazione di
un'estensione per il class designer di VS2005 ed è frutto di un paio di giorni
di ricerche e prove intensive, vista la scarsa documentazione (facciamo pure
"quasi nulla"?) che c'è in giro sull'argomento!
Intanto ringrazio tantissimo Lorenzo "Genio
Del Male" Barbieri, perché mi ha proposto lui di scriverlo e perché ha avuto
tanta pazienza nella fase di editing, poi... Beh.. se avete 5 minuti di tempo,
provate a darci un'occhiata, mi farebbe molto piacere avere qualche...
A questo link trovate un interessante articolo introduttivo a LINQ da parte di niente-popò-di-meno-che ScottGu, e scusate se è
poco
powered by IMHO 1.3
Nei giorni scorsi ho ricevuto un feedback da un ceco
(nel senso che abita in Repubblica Ceca ) che aveva scovato la
mia piccola libreria per puro caso, dicendo che secondo lui avrei dovuto
metterla in un posto che le garantisse una maggiore visibiltà.
Io e il mio inglese maccheronico ci siam messi al lavoro e ho partorito un articoletto per CodeProject. Che dire,
ricevere i primi rating positivi è una soddisfazione grandissima! Ora spero
anche in qualche feedback in modo da poter evolvere il lavoro sin qui
svolto.
powered by IMHO 1.3
Chi sviluppa componenti con supporto al designer di
VisualStudio, sicuramente si è trovato ad utilizzare la proprietà DesignMode per verificare se il codice sia in esecuzione
nel contesto del designer o a runtime.
Bene, avevo un problema che mi ha portato ad indagare su come funzioni
internamente questa proprietà. Reflector alla
mano ho scoperto che, in un Component...
protected bool DesignMode{ get { ISite site1 = this.site; if (site1 != null) return site1.DesignMode; return false; }}
Ora... premesso che, se utilizziamo VisualStudio, a
design time il field site è un'istanza di
System.ComponentModel.Design.DesignerHost.Site e che quel
site1.DesignMode ritorna sempre true, c'è da fare
un'importante considerazione: durante l'esecuzione del costruttore del
Component, DesignMode è SEMPRE false, perché il corrispondente Site non
è...
Sicuramente tutti voi avrete notato che, nel template
utilizzato da VS2005 per il metodo main dei nostri progetti windows forms,
c'è una riga che recita
Application.SetCompatibleTextRenderingDefault(false);
Di cosa si tratta? L'ho scoperto ieri sera, cercando di
utilizzare anche in C# la classe WindowsFormsApplicationBase: è una nuova feature delle
classi che ereditano da Control del Fx 2.0 e consiste nella capacità di
utilizzare GDI piuttosto che GDI+ per il rendering del testo.
Come mai? Beh, GDI+ ha la peculiarità di avere API estremamente semplici da
utilizzare, ma il buon vecchio GDI offre parecchi vantaggi, per esempio:
Il look dell'applicazione è più consistente con le varie...
La piccola libreria open-source che sto realizzando si è
appena evoluta: grazie al tempo libero che ho avuto durante queste vacanze, sono
riuscito (in ritardo rispetto a quanto avevo previsto, purtroppo) a rilasciare
la versione 1.1 delle Crad's Actions.
Le novità rispetto alla release precedente sono parecchie: intanto un
sensibile refactoring del codice (come?!?! così presto?!? ), che ora è sensibilmente più ordinato e
comprensibile, poi l'aggiunta di nuove proprietà (quali shortcut keys,
tooltip, ecc.ecc...), infine la creazione di un corposo numero di Standard
Actions (es. Cut/Copy/Paste e parecchie altre), numero che è destinato ad
aumentare nei prossimi giorni
Per dimostrare il...
Il titolo non sarà la massima espressione di linguaggio
tecnico, però è un problema che mi sono trovato ad affrontare nel weekend
sviluppando le mie
Actions
Ora, chi le ha scaricate e magari ha avuto modo di guardarne i sorgenti, sa
che si tratta di oggetti che ereditano da Component e che vanno sistemati su una
Windows Form. Mi sono trovato nella necessità di avere, nella mia ActionList, un
riferimento alla Form su cui essa giace....
Quando creiamo CustomControls, spesso
esponiamo proprietà che ritornano collection di items. Visual Studio è
abbastanza furbo da generare un Designer opportuno per creare le istanze degli
oggetti contenuti a design-time, tramite l'UITypeEditor CollectionEditor.
L'abbiamo usata migliaia di volte, si fa click su "Add"
e, detto T il tipo base di dati esposto dalla
collection, automaticamente una nuova istanza di T viene aggiunta ad essa.
Bene, ma se T fosse un tipo astratto? o se volessimo popolare tale
collection anche con tipi derivati da T? come farlo a design time?
Nulla di più semplice! Basta creare un custom UITypeEditor che derivi da CollectionEditor ed...
Dato che mi è stato chiesto da qualcuno in mail, ho pubblicato un breve
tutorial (in inglese, spero non troppo maccheronico ) su come utilizzare le Actions per .NET 2.0.
Per leggerlo basta un click qui!
powered by IMHO 1.3
Chi ha lavorato in Delphi sa quanto siano comode le
actions! Di cosa si tratta? Allora...
Una form, solitamente, permette di compiere la stessa azione tramite più
elementi visuali; pensate ad esempio alla funzione "Grassetto" in un ipotetico editor RTF: magari
possiamo attivarla tramite menu, oppure potremmo utilizzare una comoda toolbar,
o ancora potremmo accedervi tramite un bel context menu. Tutti questi elementi condividono
parecchie proprietà: innanzitutto devono tutti rispondere al click del mouse allo stesso modo, e
questo si può già fare in .NET assegnando lo stesso event handler a tutti gli oggetti per i rispettivi eventi click. Purtoppo ciò...
Se siete utilizzatori abituali di Visual Studio 2005, allora consiglio di dare un'occhiata a questo post di Brian Goldfarb: c'è
infatti la possibilità di partecipare al nuovo programma denominato
Engineer-to-Engineer per fornire feedback sulla nostra esperienza di
tutti i giorni con l'IDE di Microsoft. Qual è il premio per il disturbo? Beh,
ogni volta che si viene contattati, ci sarà la possibilità di scegliere un
regalo tra una serie di software gratuiti che vanno da giochi XBox a Visual
Studio Professional.
powered by IMHO 1.3