.NET Development

Upgrade di Service Fabric - Storie di vita vissuta

Vista la disponibilità della versione 6.0 del runtime di Service Fabric ho aggiornato la mia macchina di sviluppo, ma la cosa non è andata propriamente “liscia”, nonostante abbia usato il Web Platform Installer come ho sempre fatto per le versioni precedenti. La procedura di setup usa uno script PowerShell chiamato CleanFabric.ps1, che si trova in C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code. Lo script elimina l’installazione precedente prima di procedere al setup della nuova versione...   ...Se ci riesce!  Nel mio caso, l’upgrade si è bloccato con questo errore:  “Unable...

posted @ Tuesday, September 26, 2017 2:24 PM | Feedback (2)

Visual NUnit

E’ più che altro una questione di abitudine, ma mi sono sempre trovato così bene con NUnit, che non mi è mai capitato di usare sul serio MSTest. Una cosa davvero molto bella che ha MSTest è, ovviamente, la totale integrazione con l’IDE di Visual Studio, cosa che NUnit può avere solo con tool di terze parti, spesso a pagamento (ReSharper in primis). Ho trovato però Visual NUnit 2010, un add-in molto carino per Visual Studio 2010 che aggiunge un test runner per NUnit all’IDE di Visual Studio 2010. Non è completo come quello di ReSharper,...

posted @ Friday, April 6, 2012 2:30 PM | Feedback (0)

AppFabric 1.1 Cumulative Update

E’ stata rilasciata una Cumulative Update per Windows Server AppFabric 1.1 che risolve alcune “magagne” qua e là. Come buona abitudine, consiglio sempre di leggere prima le informazioni sull’update, e poi eventualmente procedere al download. Mi raccomando! Technorati Tags: AppFabric

posted @ Thursday, April 5, 2012 10:05 PM | Feedback (0)

NBuilder

Me lo segno qui, perché l’altro qualche giorno fa ne avevo bisogno, ma non mi ricordavo né il nome, né il sito… (grazie Luca, per il reminder ). Tutte le volte che creiamo i nostri unit test, abbiamo anche bisogno di creare le istanze delle classi che saranno poi oggetto dei test. NBuilder è una libreria che facilita la creazione di test objects, evitandoci di scrivere tutto quel noioso codice in fase di SetUp/TestInitialize di ogni test fixture. Io l’ho trovata davvero utile! Il download, qui. Technorati Tags: .NET,Testing

posted @ Tuesday, November 2, 2010 11:41 AM | Feedback (1)

Nuova versione di Castle Windsor (e NHibernate?)

Giusto ieri è stata rilasciata la nuova versione 2.5 di Castle Windsor; tra le tante novità, il supporto a .NET 4.0 e Silverlight. Bene; supponiamo di voler aggiornare un progetto esistente basato su NHibernate, in modo che usi anche l’ultima versione di Castle Windsor. Prima della versione 2.1.x di NHibernate, la cosa non era semplicissima, dato che era presente una reference diretta agli assembly Castle.Core e Castle.DynamicProxy, quindi l’unica strada percorribile era:: Scaricare il codice sorgente di NHibernate. Scaricare la versione di Castle Windsor desiderata. ...

posted @ Tuesday, August 24, 2010 2:06 PM | Feedback (2)

Castle Scheduler

La suite CastleProject si arricchisce di un nuovo componente: Castle Scheduler. Si tratta di un Job Scheduler simile al forse più famoso Quartz.NET, porting della omonima libreria Java. Ovviamente, l’integrazione con Castle Windsor è piuttosto semplice. Merita un’occhiata. Technorati Tags: .NET,Castle

posted @ Monday, June 14, 2010 3:25 PM | Feedback (0)

Servizi Windows autoinstallanti

E’ noto che per installare un Windows Service bisogna ricorrere al tool InstallUtil, che si occupa di eseguire tutte le configurazioni necessarie affinche il nostro eseguibile possa essere gestito come servizio di sistema. Spesso si trovano eseguibili che possono operare come servizi di sistema semplicemente invocandoli con particolari parametri sulla linea di comando, ad esempio: MyService.exe –installservice MyService.exe -uninstallservice Per aggiungere una funzionalità simile al nostro Windows Service, basta andare a curiosare all’interno di InstallUtil.exe con il fido Reflector, per accorgersi che in realtà il tool non fa...

posted @ Sunday, May 9, 2010 10:25 PM | Feedback (3)

NHibernate in applicazioni desktop

Ho sempre notato che la maggior parte degli esempi e della documentazione che si trova in rete su NHibernate riguarda applicazioni web, e per me che ho sempre dato precedenza ad applicazioni Smart Client, è stato un problema, almeno all’inizio. Fortunatamente, il solito Ayende è corso in nostro aiuto: su MSDN magazine è stato pubblicato un suo  articolo che tratta l’utilizzo di NHibernate in un’applicazione WPF, spiegando con quali tecniche gestire la concorrenza, il databinding e la Session in un contesto molto diverso da quello web quale è l’applicazione desktop. Articolo interessante che merita una...

posted @ Thursday, December 10, 2009 4:50 PM | Feedback (2)

Linq2NHibernate, FirstOrDefault e… I Dire Straits

Tutti conosciamo i Dire Straits, vero? Bene. La miglior formazione dei Dire Straits, a mio avviso, è stata quella composta da: Mark Knopfler (voce e chitarra solista) John Illsley (basso) Hal Lindes (chitarra ritmica) Alan Clark (tastiere) Terry Williams (batteria) Se provassimo a mappare il tutto in un modello ad oggetti, potremmo scrivere: public class Band { public int BandId { get; set; } ...

posted @ Wednesday, August 5, 2009 1:50 PM | Feedback (0)

Rilasciato NHibernate 2.1.0

E’ stata rilasciata la versione 2.1.0 di NHibernate. Qualche novità: 1. Supporto diretto a SQL Server 2008 (MSSql2008Dialect); NHibernate può usare i tipi di dato Date, Time, DateTime2, DateTimeOffset. 2. Nuovi ID Generators. 3. Executable HQL. E’ possibile scrivere una cosa del tipo: using (ISession session = GetSession()) { using (ITransaction tx = session.BeginTransaction()) { session.CreateQuery("delete from MyEntity").ExecuteUpdate(); tx.Commit(); ...

posted @ Monday, July 20, 2009 8:49 AM | Feedback (0)

Aggiungere il link di "Rimuovi applicazione" nel setup project di Visual Studio 2008

Ho creato un Setup Project per un'applicazione, e ho notato che non è così immediato aggiungere la voce "Rimuovi applicazione" come icona nel menù Start di Windows. L'ideale sarebbe creare un collegamento a msiexec.exe e fornire gli opportuni parametri per la disinstallazione, ma a quanto sembra, nel Setup Project di Visual Studio non è possibile referenziare tramite Shortcut un file non presente tra i files che compongono l'applicazione. Per ovviare a questo, ho aggiunto tra i files dell'applicazione un file Uninstall.bat contenente questi comandi: @echo off msiexec /I {Product Code} dove Product...

posted @ Tuesday, December 30, 2008 7:55 PM | Feedback (0)

XNA Game Studio 3.0

Ok, è ufficiale: la mia vita sociale potrebbe essere seriamente compromessa. Con il rilascio di XNA Game Studio 3.0, la mia passione per i videogiochi potebbe unirsi alla mia passione per la programmazione, producendo risultati imprevedibili. Qualcuno in casa mia è già preoccupato, ma prometto che cercherò di controllarmi...

posted @ Tuesday, November 4, 2008 7:30 PM | Feedback (2)

"Strumenti per la luce d'argento"

Sono stati rilasciati i Silverlight Tools per Visual Studio 2008 SP1, i quali erano in beta al momento del rilascio di Silverlight 2.0. Il pacchetto completo si può scaricare qui. Vediamo se adesso anch'io riesco a far brillare la "luce d'argento".

posted @ Friday, October 31, 2008 6:59 PM | Feedback (0)

Expand/Collapse All in Visual Studio 2008

Oggi ho scaricato l'ultima drop di NSK e, tra MVP, MVC, NUnit Tests, MSTest e compagnia bella, il numero di progetti che compongono la solution inizia ad essere consistente. Con un tale numero di projects, si sente la mancanza in Visual Studio della possibilità di espandere/chiudere in un solo colpo tutto il "tree" della solution. Una rapida ricerca su Google mi ha portato a questo link: http://it.toolbox.com/blogs/think-clients/visual-studio-macro-collapse-solution-explorer-18035 dove ho trovato una macro utile allo scopo. Su Connect qualcuno ha già fatto notare la mancanza: secondo me sarebbe una funzionalità molto...

posted @ Tuesday, July 22, 2008 12:57 PM | Feedback (2)

Community Days - The day after

Ragazzi, così mi viziate! Leggendo le considerazioni di tutti, è difficile trovare qualcos'altro da dire, ma non posso esimermi dal dire che sono stati due giorni "stréordinéri" (cit.). Inizio subito con un "Thumbs Up" grosso così per la sessione BOF di Roberto: per quanto mi riguarda, già quella valeva la partecipazione alla prima giornata. Per il resto, mi sono dato un target più architetturale (come spesso mi accade ultimamente) che pratico, pur perdendo le sessioni su WPF SP1 di Corrado o quella su applicazioni Web Service-based di Stefano, che mi avrebbero ugualmente interessato. Come "fuori programma" ho fatto un'interessante chiacchierata...

posted @ Friday, July 11, 2008 2:20 PM | Feedback (0)

Come si crea una Mobile Web Application in VS 2008?

Ci ho fatto caso solamente oggi: tra i template disponibili in Visual Studio 2008 non è presente quello per le Mobile Web Applications. Il team di Visual Web Developer ha però messo a disposizione i template aggiuntivi per questo tipo di applicazioni; le informazioni in questo post. Come spiegato, la nuova architettura del designer di VS 2008 non permette di creare una Mobile Web Form in "Design View", ma solo in "Source View". Trovo comunque assurdo che si stato tolto il supporto visuale alle Mobile Web Forms. Chissà se il SP1 sistemerà qualcosa...

posted @ Tuesday, June 24, 2008 3:14 PM | Feedback (2)

Nullables

Due cose carine sui Nullable Types che mi segno, in caso di utilizzi futuri. Per verificare se un tipo è Nullable: 1: bool IsANullableType(Type type) 2: { 3: return (type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>)) ); 4: } Per sapere il corrispondente "Non Nullable" di un Nullable Type: 1: NullableConverter nc = new NullableConverter(int?); 2: Type notNullableType = nc.UnderlyingType; // notNullableType è int

posted @ Monday, May 5, 2008 4:25 PM | Feedback (0)

HTML Parser Library

Ho scritto un piccolo applicativo che esegue l'analisi del contenuto di alcune pagine HTML scaricate offline, e per realizzarlo ho utilizzato una comoda libreria chiamata HtmlParser.Net. Da tenere nella propria "cassetta degli attrezzi": può sempre servire.

posted @ Thursday, March 20, 2008 9:45 PM | Feedback (0)

I nomi di persona si scrivono con la prima lettera maiuscola

Alle elementari ci è stato detto più di una volta, e .NET ci aiuta anche in questo. Supponiamo di avere: string mioNome = "alBeRto dAllAgiaComa"; con un semplice: using System.Globalization;  Console.WriteLine(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(mioNome)); avremo in output: Alberto Dallagiacoma Da documentazione MSDN, le stringhe interamente in maiuscolo (tipo acronimi) non vengono convertite.

posted @ Wednesday, February 13, 2008 12:56 PM | Feedback (0)

Web Deployment Projects anche per VS2008

Questo comodo add-in è stato rilasciato anche per Visual Studio 2008. Il download qui.

posted @ Sunday, January 27, 2008 3:02 PM | Feedback (0)

Il web.config di ASP.NET 3.5 visto da vicino

In questo articolo, Scott Mitchell analizza il web.config creato da Visual Studio 2008 per un'applicazione ASP.NET. Il numero di parametri inclusi nel file è superiore rispetto a Visual Studio 2005, e sia che si stia scrivendo un'applicazione nuova, sia che si stia facendo l'upgrade di una applicazione scritta in una precedente versione di ASP.NET, è utilie capire che cosa cambia. Buona lettura.

posted @ Tuesday, December 11, 2007 9:33 PM | Feedback (0)

Aspettando Visual Studio 2008...

Purtroppo sono uno dei "poveracci" cha una MSDN Professional , quindi per ora, niente Visual Studio 2008... Per chi si trova nella mia situazione, ho visto che almeno le versioni Express sono disponibili. Nell'attesa (spero breve), è meglio di niente...

posted @ Monday, November 19, 2007 5:16 PM | Feedback (4)

Conosciamo bene il viewstate?

Ho trovato un interessante articolo che spiega in dettaglio il ViewState: come funziona, quando è sconsigliato usarlo, quando non è necessario... Si trova qui: http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx Merita un'occhiata.

posted @ Wednesday, October 31, 2007 8:45 AM | Feedback (0)

Visualizzare l’elenco dei fonts installati

La mia ragazza mi ha chiesto di realizzarle un programmino per poter stampare l'elenco dei fonts installati nel sistema. Per fare una cosa simile, il .NET Framework mette a disposizione la classe InstalledFontCollection nel namespace System.Drawing.Text, che permette di scrivere una roba di questo tipo: using System.Drawing.Text;   using (InstalledFontCollection installedFonts = new InstalledFontCollection()) { for (int i = 0; i < installedFonts.Families.Length; i++) { Console.WriteLine(installedFonts.Families[i].Name); } } Semplice no?

posted @ Friday, September 14, 2007 8:53 PM | Feedback (0)

Validator e confirm() in una pagina ASP.NET

Un caso simpatico: Pagina ASP.NET 2.0 con un controllo Validator con proprietà EnableClientScript=True. LinkButton con proprietà CausesValidation=True che esegue un'azione, e sul click deve presentare un messaggio di conferma (Vuoi eseguire questa azione? Sì/No). Se, dopo aver fatto click sul LinkButton, la validazione non va a buon fine, viene mostrato il messaggio di errore del controllo di convalida, ma viene anche mostrato il messaggio di conferma associato al LinkButton. Per evitare questo, bisogna ricorrere ad un po' di JavaScript e all'attributo OnClientClick del controllo LinkButton. Definiamo una funzione JavaScript del tipo: function CheckValidator(validator, message) {     if (document.getElementById(validator).getAttribute("IsValid"))     {         return confirm(message);     }    ...

posted @ Friday, July 13, 2007 5:55 PM | Feedback (0)

NHibernator

Una delle prime cose che si fanno quando si lavora con NHibernate è la creazione della fantomatica classe "Session Helper", che si occupa di creare la session factory e esporre il metodo per ottenere la session. A questo indirizzo ho trovato un'interessante implementazione di classe helper chiamata NHibernator che, oltre a fornire le funzionalità di cui sopra, offre altre caratteristiche interessanti, tra cui: Implementazione del pattern "Open Session In View" per applicazioni ASP.NET. Possibilità di gestire le sessions in modo che siano associate al thread che le richiede (utile in applicazioni Windows Forms). Supporto per database multipli. Il tutto è abbastanza facile da usare e...

posted @ Tuesday, June 26, 2007 11:14 PM | Feedback (0)

Ho preso il mio codice dalla "cassaforte" e l'ho messo nella "fortezza"!

Qualche giorno fa SourceGear ha rilasciato la versione 1.0 di Fortress, un prodotto che integra source control e bug tracking. Il primo è praticamente la codebase di Vault, mentre il secondo è l'evoluzione del vecchio prodotto Dragnet (ormai non più aggiornato). Il tutto gira integrato nell'IDE di Visual Studio 2005, e supporta Windows Vista (x86/x64) e SQL Server 2005. Utilizzando con soddisfazione Vault da qualche anno, ho subito convertito tutto (con un po' di lavoro...) a Fortress. E' vero che nel frattempo è uscito TFS, e che l'offerta Microsoft di software source control non si limita più (fortunatamente) a SourceSafe, ma per chi non può permettersi (soprattutto economicamente :-) )...

posted @ Tuesday, June 5, 2007 9:09 AM | Feedback (4)

WindowsClient.net

Da oggi il sito ufficiale dedicato alla tecnologia Smart Client sotto Windows è diventato WindowsClient.net. Spero vivamente che questa tecnologia abbia un po' più considerazione. Noto che troppo spesso è messa in secondo piano rispetto alla sua controparte web, trascurando il suo grande potenziale, ma si sa, l'applicazione web va di moda... Credo però che WPF possa contribuire molto in questo senso.

posted @ Saturday, May 12, 2007 9:39 PM | Feedback (3)

Attivare un HttpModule via codice

Il metodo classico per registrare un HttpModule in una applicazione ASP.NET è inserirlo nell'apposito tag HttpModules del web.config: <system.web>    <httpModules>        <add name="MyModule" type="MyModule, MyAssembly" />    </httpModules></system.web> E' possibile fare la stessa cosa via codice, nel caso, ad esempio, volessimo attivare un modulo piuttosto che un altro a seconda di un parametro presente in un file di configurazione. Bisogna innanzitutto aggiungere il file Global.asax all'applicazione web e fare l'override del metodo Init() della classe Global: public class Global : System.Web.HttpApplication{    public static readonly IHttpModule Module = new MyModule();    public override void Init()    {        base.Init();        Module.Init(this);    }}

posted @ Thursday, May 10, 2007 1:00 PM | Feedback (0)

Un problemino con la DataGrid di ASP.NET 2.0

Migrando un progetto da ASP.NET 1.1 a ASP.NET 2.0 mi sono accorto di un problema con il controllo DataGrid: se il controllo mostra una o due righe, e viene selezionata la prima riga dell'elenco, sul postback viene perso l'attributo "colSpan" del pager.Visto che solitamente personalizzo il pager per mostrare informazioni di riepilogo, questo problema porta ad un rendering "sballato" di tutti i controlli aggiunti nel pager. Fortunatamente, la soluzione è abbastanza semplice: basta intercettare l'evento OnItemCreated e gestire la creazione del pager: protected void grid1_ItemCreated(object sender, DataGridItemEventArgs e){    if (e.Item.ItemType == ListItemType.Pager)    {        if (e.Item.Cells.Count > 0)        {            e.Item.Cells[0].Attributes.Add("colspan", e.Item.Cells[0].ColumnSpan.ToString());        }    }} In ASP.NET 1.1 questo...

posted @ Monday, March 12, 2007 10:54 AM | Feedback (0)

.NET Reflector 5.0

Nuova versione per questo indispensabile tool.Qui il download, mentre qui si trova l'elenco delle nuove features.

posted @ Tuesday, February 20, 2007 9:03 AM | Feedback (0)

OLEDB, Access e connection pooling

Ho notato che, accedendo ad un database Access, il provider OLE DB per Jet non abilita il connection pooling di default.Se si necessita di questa funzionalità, basta aggiungere alla connection string il parametro: OLE DB Services=-1

posted @ Friday, December 29, 2006 10:48 PM | Feedback (0)

MSDN Library su DVD

Visto che d'ora in avanti sarà possibile scaricare la MSDN Library anche senza una MSDN Subscription (come riportato nel post di Corrado), sarebbe comodo avere tutta la documentazione su DVD in sostituzione dei 3 cd disponibili nel download. Per fare questo, è necessario un tool che permetta la modifica dei file .msi. Ne troviamo uno nel Windows Platform SDK, chiamato Orca (sembra un'imprecazione , ma è utile allo scopo). Dopo esserci procurati questa utility, basta seguire questi passi: Copiare il contenuto dei 3 cd della MSDN Library in una cartella sull'hard disk. Con Orca, aprire il...

posted @ Thursday, July 27, 2006 2:01 PM | Feedback (0)

Unable to open shim database version registry key - v2.0.50727.00000

Capita che, saltuariamente, venga riportato nell'Event Log di Windows questo errore: Source: .NET Runtime Category: None Type: Error User: N/A The description for Event ID ( 0 ) in Source ( .NET Runtime ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: Unable to open shim database version registry key - v2.0.50727.00000. Non ho trovato molta documentazione al riguardo, ma "Googlando" qua e là, ho...

posted @ Thursday, July 13, 2006 10:09 PM | Feedback (0)

Krypton Toolkit

Segnalo questo interessante toolkit per lo sviluppo di interfacce utente Windows Forms http://www.componentfactory.com/product_toolkit.html Il tutto free e compatibile con il Framework 2.0. Merita un'occhiata...

posted @ Sunday, June 4, 2006 10:58 PM | Feedback (2)

Settings in un'applicazione Windows Forms

Da qualche giorno mi sto divertendo con la gestione dei settings in un'applicazione WinForms (ApplicationSettingsBase, settings providers e compagnia bella). Ho trovato un po' ostico il salvataggio delle impostazioni che devono essere "globali" all'applicazione, ad esempio la connection string per accedere ad un database, oppure l'URL per connettersi ad un web service. Queste impostazioni sono generalmente memorizzate nel file app.config associato all'applicazione.Il metodo Save() della classe ApplicationSettingsBase permette solamente il salvataggio delle impostazioni "User Scoped" (a livello di utente), lasciando le impostazioni "Application Scoped" di sola lettura.Ho trovato due modi per modificare e salvare le impostazioni di validità globale; supponendo di voler modificare...

posted @ Thursday, March 16, 2006 10:13 PM | Feedback (0)

Arrotondare un numero

Operazione abbastanza semplice, o almeno sembra... Mi è capitato di scrivere un programma che genera dei documenti in formato PDF, e la cosa che mi ha dato più problemi è stata arrotondare le valute a due cifre decimali. Non l'avrei mai detto... Ho trovato però dei link interessanti sull'argomento: Binary floating point and .NET Decimal floating point in .NET How to Implement Custom Rounding Procedures

posted @ Sunday, March 5, 2006 10:25 PM | Feedback (0)

Enterprise Library per .NET 2.0

Finalmente il team Patterns and Practices "did it"! E' possibile scaricare tutto da qui. Io sono così curioso che sono in download con il 56k :-) (però... Sta andando a 5.1 Kb/s, niente male il mio immortale U.S. Robotics...). Tra gli highlights di questa versione si trova sicuramente il pieno supporto alle nuove funzioni del Framework 2.0, il che ha permesso di eliminare il Configuration Application Block e parte del Security Application Block, in favore di quello che il runtime 2.0 offre nativamente. E' comunque inclusa la "migration guidance".

posted @ Saturday, January 21, 2006 2:52 PM | Feedback (0)

Providers per Enterprise Library

Usando il Data Access Application Block incluso nella Enterprise Library di giugno 2005, mi sono accorto che non è presente il supporto per i database Access.Spulciando un po' la documentazione e il sorgente a corredo, ho notato che è piuttosto semplice aggiungere questa funzionalità, così mi sono creato la libreria mancante, e già che c'ero, ho inserito anche il supporto a ODBC (mai usato in .NET, ma non si sa mai... ;-) )Se qualcuno li vuole provare, ho uploadato tutto in questa pagina (fatta proprio al volo, eh?)

posted @ Sunday, October 30, 2005 9:49 PM | Feedback (1)

Un AssemblyInfo comune a tutti i progetti di una solution

Sto lavorando ad un programma la cui solution è composta da sette projects, e mi serve fare in modo che tutti i projects abbiano lo stesso numero di versione.Visto che i numeri di versione sono contenuti nel file AssemblyInfo.cs (o .vb) di ciascun progetto, è possibile creare un file AssemblyInfo comune e referenziarlo in ogni singolo progetto, in questo modo: Creare un file GlobalAssemblyInfo.cs e inserire al suo interno le informazioni comuni a ciascun assembly (oltre al numero di versione, è possibile includere lo strong name, il nome della società, ecc...). Includere il file GlobalAssemblyInfo.cs tra i "Solution Items" (click con il...

posted @ Monday, October 17, 2005 10:40 PM | Feedback (2)

Enterprise Library

Dopo aver "snobbato" (forse ingiustamente) gli Application Blocks, da qualche giorno mi sto interessando alla Enterprise Library. Questo pacchetto raggruppa tutti gli application blocks in un unico framework, con tanto di codice sorgente, documentazione e un comodo tool di configurazione. Troviamo infatti: Data Access Application Block:Basato su ADO.NET, contiene funzioni che facilitano l'accesso alle origini dati. E' tutto è implementato tramite Factory Pattern, rendendo il tutto indipendente dalla base dati che si vuole utilizzare. Caching Application Block:Permette di implementare la funzionalità di cache in qualsiasi applicazione, astraendo lo "storage" che si vuole utilizzare per la memorizzazione (Isolated Storage, database, memoria...). Configuration Application Block:Utilizzato in modo massiccio da...

posted @ Thursday, September 15, 2005 7:45 PM | Feedback (1)

Visual Studio 2005, forms e accessors

Questo post di Corrado mi ha fatto notare una cosa che mi era davvero sfuggita: tutti gli elementi di una Windows Form (controlli standard o user controls) in Visual Studio 2005 hanno come scope public. Bisognerà quindi porre molta attenzione alla visibilità delle classi nei progetti.Per quanto mi riguarda, non sono assolutamente d'accordo su questa feature, quindi, come suggerito da Corrado, sono andato subito a votare qui.

posted @ Thursday, September 1, 2005 10:15 PM | Feedback (0)

Eseguire lo shutdown e/o il reboot di Windows da programma.

Su un newsgroup ho letto di una persona che chiedeva come eseguire lo shutdown  di Windows da programma. Con documentazione MSDN alla mano, ho scritto un paio di funzioni che fanno shutdown e reboot (bel modo di sfruttare la pausa pranzo, eh? :-)). using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] private struct LUID {     public uint LowPart;     public uint HighPart;}; [StructLayout(LayoutKind.Sequential)]private struct TOKEN_PRIVILEGES{    public int PrivilegeCount;    public LUID Privileges;    public int Attributes;}; [DllImport("kernel32.dll")]private extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", SetLastError=true)]private extern bool OpenProcessToken(IntPtr ProcessHandle, int DesiredAccess, ref IntPtr TokenHandle); [DllImport("advapi32.dll", SetLastError=true)]private extern bool LookupPrivilegeValue(string lpSystemName, string lpName, ref LUID lpLuid); [DllImport("advapi32.dll", SetLastError=true) ]private extern bool AdjustTokenPrivileges(IntPtr TokenHandle, int DisableAllprivileges, [MarshalAs(UnmanagedType.Struct)]ref TOKEN_PRIVILEGES NewState, int...

posted @ Thursday, July 21, 2005 2:08 PM | Feedback (0)

Visual Studio 2005 Beta 2

Proprio ieri mi è arrivata la beta 2 di Visual Studio 2005, che avevo richiesto qui. L'unica versione di VS2005 che avevo provato fino a ieri era stata la CTP di marzo 2004 (abbastanza instabile); ieri sera ho preparato una virtual machine Windows Server 2003 SP1 nuova di zecca con VMware 5.0 e, con un po' di pazienza, l'ho installato. Piano piano sto esplorando tutto quello che mi aspetta e, in generale, il FW 2.0 mi piace un sacco! Un'altre cosa mooolto gradita è la beta di SQL Server 2005 compresa nella confezione. Non avevo ancora visto SQL Server 2005, ma già ora sento...

posted @ Friday, May 6, 2005 10:01 PM | Feedback (2)

ComponentArt Snap

Snap è un simpatico componente per pagine ASP.NET che permette di aggiungere contenuti "draggabili" alle nostre pagine web, uguali a quelli che troviamo nelle pagine degli articoli di MSDN sul web. La cosa ancora più simpatica è che è gratuito! E' possibile scaricarlo qui. Appena il mio 56k ha finito il download, lo provo!

posted @ Sunday, April 24, 2005 11:26 AM | Feedback (0)

ASP.NET Web Controls

Sul sito http://www.obout.com ho trovato alcuni controlli per ASP.NET piuttosto interessanti, alcuni free, altri a pagamento. Senza spendere un Euro, possiamo utilizzare: ASP.NET TreeViewSlideMenu (Basic)Calendar (Basic) Per dare un aspetto molto "cool" alle nostre webapps!

posted @ Sunday, March 20, 2005 2:40 PM | Feedback (1)

Dataset o Custom Entities? Dubbio amletico...

Per quanto mi riguarda, è una questione che ricorre spesso: per la rappresentazione e il trasferimento dei dati tra i layers applicativi è meglio utilizzare un DataSet oppure definire delle custom entities? Come succede in molti casi, la risposta giusta è "Dipende dalla situazione".Ho trovato questo articolo su MSDN che introduce secondo me molto bene la situazione: http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/CustEntCls.asp Per chiarirmi meglio le cose, mi sono comprato, su consiglio di molti, il libro di Martin Fowler, Patterns Of Enterprise Application Architecture: libro fantastico, che anch'io consiglio veramente a tutti (tra l'altro è citato anche nell'articolo di cui sopra).

posted @ Thursday, March 10, 2005 9:50 PM | Feedback (1)

Aggiornamento per WSE 2.0

E' stato rilasciato il terzo Service pack per Web Services Enhancements 2.0. E' possibile scaricare il package completo qui, mentre qui è disponibile il Runtime Installer standalone.Il sito WSEFaq ha un elenco completo di cosa è stato cambiato: http://wsefaq.com/question.aspx?id=ef000e76-3eb4-4727-8a5d-e2b0f6d51b17

posted @ Wednesday, March 2, 2005 8:04 AM | Feedback (2)

ASP.NET Identity Matrix

Per sapere al volo quale Identity viene utilizzata in un'applicazione ASP.NET a seconda delle opzioni impostate nel web.config e/o in IIS, c'è un utile schema in questa pagina: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secmod/html/secmod38.asp

posted @ Monday, February 28, 2005 9:47 AM | Feedback (0)

Una suite di controlli per Windows Forms

Girovagando qua e là per la rete, ho trovato per caso questa suite di controlli per Windows Forms totalmente free: http://www.stimulsoft.com/StimulControlsMoreInfo.aspx Appena mi capita, provo a fare qualcosa. Se intanto qualcuno vuole farsi avanti...

posted @ Monday, January 3, 2005 10:00 PM | Feedback (5)

Avrò scoperto l'acqua calda, ma...

In VB6 c'era l'array associativo dei controlli di una form, che permetteva di fare una cosa del tipo: Me.Controls("txtNome") e poi accedere alle varie proprietà.Ho tentato di fare la stessa cosa in C#, ma non ho trovato un modo equivalente, se non con questa funzione: private Control GetControl(Control container, string controlName){System.Type t = container.GetType();return t.InvokeMember(controlName, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, container, new object[] {}) as Control;} Poi con (TextBox)GetControl(this, "txtNome") posso accedere alle varie proprietà.

posted @ Thursday, December 9, 2004 10:30 PM | Feedback (0)

WSE 2.0 Service Pack 2

E' stato rilasciato il SP2 per Web Service Enhancements 2.0. E' disponibile sia il download completo (qui), sia il runtime installer (qui).

posted @ Saturday, December 4, 2004 7:18 PM | Feedback (0)

Gestione degli errori in una applicazione ASP.NET

Questo articolo è notevole: http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/elmah.asp Penso che dovrò rivedere la mia libreria di Error Handling... ;-)

posted @ Sunday, October 17, 2004 12:36 PM | Feedback (0)

Il Service Pack 2 di Windows Xp fa qualche discriminazione?

Sul mio Pc di casa ho Windows XP Sp2 in inglese installato da un cd con SP2 direttamente integrato (slipstreamed). Da qui, ho creato una web application ASP.NET con 2 pagine: Login.aspx e HomePage.aspx Il web.config contiene: < authentication mode="Forms"> <forms name="FORMSAUTH-TEST" loginUrl="Login.aspx" /> authentication>   <authorization> <deny users="?" /> authorization> Nella pagina Login.aspx c'è un pulsante il cui codice sull'evento click è: System.Web.Security.FormsAuthentication.RedirectFromLoginPage("Alberto", false); in modo che, appena faccio click, vengo rediretto sulla prima pagina dell'applicazione. Tutto molto semplice, finché nel web.config non aggiungo: < identity impersonate="true" /> e non porto questa stupida applicazione al lavoro, dove ho un Pc con Windows XP Sp1 in italiano nel quale ho installato il Service Pack 2 subito dopo il rilascio...

posted @ Saturday, October 16, 2004 3:28 PM | Feedback (6)

Il problema della canonicalization di ASP.NET è trattato sulla Knowledge Base

Al link http://support.microsoft.com/?kbid=887459 si trova il workaround di Microsoft al problema della canonicalization di ASP.NET. Per maggiori info sulla canonicalization (ma è anche riportato nella pagina della KB in oggetto) si può leggere qualcosa qui.

posted @ Thursday, October 7, 2004 8:57 PM | Feedback (0)

ASP.NET canonicalization... Il tormentone del passato week-end

E' inutile che lo ripeta: Ci sono già molti pareri sull'argomento, sicuramente più autorevoli del mio, e rischio di dire cose già dette. Quindi, per chi se lo fosse perso, leggete questi posts: Andrea Saltarello Raffaele Rialdi Roberto Brunetti Paolo Pialorsi Lascio "last but not least", il post di Daniele Bochicchio, che fa un riassunto globale della "situescion". Purtroppo, mi è capitato spesso dover gestire situazioni dove la sicurezza diventa improvvisamente importante solo nel momento in cui si viene colpiti, altrimenti è lo stesso. Sono una persona alla...

posted @ Monday, October 4, 2004 7:01 PM | Feedback (0)

Un ambiente di sviluppo completo e totalmente "aggratis"!

Dopo il rilascio della versione finale di #Develop, abbiamo tutto il necessario per crearci un ambiente di sviluppo per .NET totalmente gratuito, nel caso non potessimo permetterci Visual Studio ;-) Basta procurarsi: 1. Il .NET Framework Runtime 2. Il .NET Framework SDK per avere tutta la documentazione 3. #Develop 1.0. 4. Web Matrix per lo sviluppo di applicazioni ASP.NET e Web Services. Poi possiamo aggiungere l'immancabile MSDE come Database, con gli ottimi tools QueryCommander per scrivere query SQL e DbaMgr2k (o ASP.NET Enterprise Manager) per la sua gestione. Shakerare il tutto... Et voilà! 8-) Non resta che dire "Buon lavoro a tutti!" :-)

posted @ Saturday, September 11, 2004 6:24 PM | Feedback (3)

#Develop 1.0

E' stata rilasciata la versione 1.0 di #Develop (SharpDevelop). E' possibile scaricarla dal sito ufficiale. Per chi non lo conoscesse, #Develop è un ambiente di sviluppo .NET, scritto totalmente in C#, molto "Visual Studio-like". I linguaggi supportati sono C# e VB.NET. Tra le tante caratteristiche, ha l'Intellisense, il supporto integrato per NUnit, la generazione della documentazione del codice in XML, un convertitore di codice da C# a VB.NET e viceversa, e tante altre caratteristiche interessanti. Il tutto completamente free e con codice sorgente a disposizione!

posted @ Saturday, September 11, 2004 6:08 PM | Feedback (0)

Prodotti in versione "Express"

Per chi segue su Internet le news il software non è una novità, ma le Beta delle versioni Express dei prodotti di sviluppo Microsoft sono disponibili per il dowload gratuito. Si trova tutto a questo link. Lo segnalo anche per me... Generalmente non provo mai le versioni beta per mancanza di tempo, ma se un giorno mi dovesse capitare, mi ricordo dove trovarle!

posted @ Tuesday, September 7, 2004 7:19 PM | Feedback (0)

.NET Framework: Service Packs per tutti i gusti

Sono disponibile due service packs per il .NET Framework: Service Pack 3 per la versione 1.0 (scaricabile da http://www.microsoft.com/downloads/details.aspx?FamilyID=6978d761-4a92-4106-a9bc-83e78d4abc5b&DisplayLang=en) Service Pack 1 per la versione 1.1 (scaricabile da http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&DisplayLang=en) La sicurezza è l'obbiettivo principale dei due Service Packs.

posted @ Tuesday, August 31, 2004 2:06 PM | Feedback (0)

Test Driven Development

Approfitto del rilascio della nuova versione di NUnit per segnalare un ottimo libro che parla proprio dello sviluppo del software a partire dai test (Test Driven Development) utilizzando NUnit. Lo sto leggendo, ed è veramente molto interessante e ben fatto. Per maggiori info: http://www.nunit.org/books.html

posted @ Monday, August 16, 2004 12:26 PM | Feedback (0)

NUnit Framework 2.2 rilasciato

E' stata rilasciata la versione 2.2 del testing framework NUnit. E' possibile scaricarla dal sito ufficiale http://www.nunit.org. Anche se la home page riporta ancora la versione 2.1 come "current", e la 2.2 come beta, andando nella sezione "Download" si può trovare la release 2.2 finale (compatibile anche con Mono 1.0). Riporto il link diretto per il download del file di installazione.

posted @ Monday, August 16, 2004 12:09 PM | Feedback (0)

Io c'ero...

Il Whidbey Workshop E' sempre bello conoscere di persona tutti quei ragazzi con i quali, giorno per giorno, discuti e chiedi consigli sui vari Newsgroups, forums, ecc... Un saluto ai mitici (in ordine alfabetico, per non fare favoritismi :-)): Andrea, Corrado e Raffaele. Ovviamente non posso non menzionare il mio "compagno di viaggio", Simone.

posted @ Friday, July 9, 2004 8:00 AM | Feedback (0)

Abemus Mono!

E' finalmente uscita la versione 1.0 di Mono, il porting su Linux del framework .NET.Per maggiori info: http://www.go-mono.org. Appena riesco a scaricarlo (è tutto il giorno che mi becco dei "Connection Timeout...), lo provo!

posted @ Friday, July 2, 2004 1:42 PM | Feedback (0)