<?xml version="1.0" encoding="iso-8859-1"?><feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="it-it"><title>PeppeDotNet Blog - Category: .NET General</title><link rel="alternate" type="text/html" href="http://www.peppedotnet.it/Blog/"/><tagline type="text/html">www.peppedotnet.it/Blog/</tagline><id>http://www.peppedotnet.it/Blog/</id><modified>2010-4-12T20:23:32+01:00</modified><author><name>Marchi Giuseppe</name><url>http://www.peppedotnet.it/Blog/</url></author><entry><title>Visual Studio 2010 RTM disponibile tramite MSDN subscription</title><id>/Blog/VisualStudio2010RTMOnMSDNSubscription.aspx</id><created>2010-4-12T20:23:32+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/visual_studio_logo.png" alt="Visual Studio 2010" border="0" style="float: right; margin: 10px" /&gt;Da pochi minuti è disponibile la RTM di &lt;a href="http://www.microsoft.com/visualstudio/it-it/" title="Visual Studio 2010"&gt;Visual Studio 2010&lt;/a&gt; per gli abbondati MSDN !
&lt;br /&gt;
&lt;br /&gt;Oggi ho assistito a parte dell'evento live di lancio con il team degli evangelist di Microsoft Italia e, a parte qualche stop dello streaming, è stato davvero un bell'evento.
&lt;br /&gt;Le novità sono veramente tante e tutte molto interessanti, a partire da Silverlight 4.0 fino ad arrivare al parallel computing e alle nuove versioni di ASP.NET, C#, VB, ecc..
&lt;br /&gt;
&lt;br /&gt;Che altro dire.. buon download ! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2010.aspx" title="TAG: Visual Studio 2010"&gt;Visual Studio 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2010RTMOnMSDNSubscription.aspx" /><issued>2010-4-12T20:23:32+01:00</issued><modified>2010-4-12T20:23:32+01:00</modified></entry><entry><title>Visual Studio 2010 e .NET Framework 4.0 Release Candidate</title><id>/Blog/VisualStudio2010AndNet4RC.aspx</id><created>2010-2-9T10:2:15+01:00</created><content type="text/html" mode="escaped">Direttamente dal blog di &lt;a href="http://weblogs.asp.net/scottgu/" title="ScottGu blog" target="_blank"&gt;ScottGu&lt;/a&gt;, l'annuncio della disponibilità di scaricare la Release Candidate di Visual Studio 2010.
&lt;br /&gt;Il download è disponibile per ora per tutti gli abbonati MSDN, mentre verrà reso disponibile per tutti a partire da questo mercoledì.
&lt;br /&gt;Ecco il link con l'annuncio:
&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx" title="VS 2010 / .NET 4 Release Candidate " target="_blank"&gt;http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2010.aspx" title="TAG: Visual Studio 2010"&gt;Visual Studio 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 4.0.aspx" title="TAG: .NET 4.0"&gt;.NET 4.0&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2010AndNet4RC.aspx" /><issued>2010-2-9T10:2:15+01:00</issued><modified>2010-2-9T10:2:15+01:00</modified></entry><entry><title>Come eliminare il simbolo relativo alla formattazione di valute</title><id>/Blog/HowToHideCurrencySymbol.aspx</id><created>2010-1-20T22:3:45+01:00</created><content type="text/html" mode="escaped">Formattando un double o un float in una valuta in formato stringa, viene ritornato anche il simbolo della valuta relativa alla cultura del thread corrente. Nel caso quindi dell'italiano, viene stampato anche il simbolo dell'euro, oltre al numero con i separatori dei decimali e delle migliaia.
&lt;br /&gt;Per formattare una valuta bisogna semplicemente passare il parametro "c" ad uno dei metodi di formattazione (va bene il metodo Format della classe String o vari overload del metodo ToString() dei tipi numerici).
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;double&lt;/span&gt; price = 2000,00;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; priceFormatted = String.Format(&lt;span style="color: #A31515"&gt;"{0:c}"&lt;/span&gt;, price);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Mi è capitato però, di non aver la necessità di stampare il simbolo euro (o il simbolo dettato dalla cultura del thread corrente) e quindi di doverlo escludere dalla formattazione. Per raggiungere questo obbiettivo, è necessario utilizzare la classe NumberFormatInfo in questo modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;NumberFormatInfo nfi = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CultureInfo(&lt;span style="color: #A31515"&gt;"it-IT"&lt;/span&gt;).NumberFormat;
&lt;br /&gt;nfi = (NumberFormatInfo)nfi.Clone();
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//elimino il simbolo dell'euro
&lt;/span&gt;
nfi.CurrencySymbol = &lt;span style="color: #A31515"&gt;""&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;double&lt;/span&gt; price = 2000,00;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; priceFormatted = String.Format(nfi, &lt;span style="color: #A31515"&gt;"{0:c}"&lt;/span&gt;, price);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Spero possa esser utile a qualcuno..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/.NET.aspx" title="TAG: .NET"&gt;.NET&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CultureInfo.aspx" title="TAG: CultureInfo"&gt;CultureInfo&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToHideCurrencySymbol.aspx" /><issued>2010-1-20T22:3:45+01:00</issued><modified>2010-1-20T22:3:45+01:00</modified></entry><entry><title>Entity framework: An error occured loading the entity data model tools package</title><id>/Blog/EntityFrameworkAnErrorOccuredLoadingTheEntityDataModelToolsPackage.aspx</id><created>2010-1-16T11:32:46+01:00</created><content type="text/html" mode="escaped">In questi giorni sto applicando Entity Framework ad un mio progetto e ogni tanto mi scontro con qualche errore qua e la.. Il primo è venuto subito alla creazione di un nuovo data model, ritornandomi a video il seguente messaggio di errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;An error occured loading the entity data model tools package. Failed to load entity data model tools package. The result is -2147467259&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Cercando un pò su google, dopo essermi accorto che è comunque un errore note, ho trovato tanti possibili workaround che arrivavano anche alla disinstallazione di Visual Studio o del Service Pack 1 della versione 3.5 del .NET Framework.
&lt;br /&gt;Il metodo di correzione che ho applicato io è stato il seguente:
&lt;br /&gt;
&lt;br /&gt;1. All'interno del percorso "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplatesCache\CSharp\Data\1033" è necessario cancellare il file AdoNetEntityDataModelCSharp.zip; questo archivio contiene il template per un nuovo elemento di tipo ADO.NET Entity Data Model. Chiaramente, se avete installato l'IDE di sviluppo in una lingua diversa dall'inglese, dovrete cercare il file sotto la cartella con il corretto LCID (1033 è il codice per l'inglese).
&lt;br /&gt;
&lt;br /&gt;2. Eseguire il comando "devenv /setup" dal command line aperto al seguente percorso: "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE", così da permettere a Visual Studio di riconfigurarsi correttamente.
&lt;br /&gt;
&lt;br /&gt;Eseguiti questi due semplici passaggi, una volta riaperto Visual Studio 2008, sarà possibile procedere alla creazione di un nuovo data model all'interno dei propri progetti.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Entity Framework.aspx" title="TAG: Entity Framework"&gt;Entity Framework&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio.aspx" title="TAG: Visual Studio"&gt;Visual Studio&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/EntityFrameworkAnErrorOccuredLoadingTheEntityDataModelToolsPackage.aspx" /><issued>2010-1-16T11:32:46+01:00</issued><modified>2010-1-16T11:32:46+01:00</modified></entry><entry><title>Visual Studio 2010 e .NET Framework 4 in RTM il 12 aprile 2010</title><id>/Blog/VisualStudio2010AndNetFramework4On12April2010.aspx</id><created>2010-1-15T11:2:38+01:00</created><content type="text/html" mode="escaped">Contrariamente a quanto detto fin'ora, è stata cambiata la data di lancio di Visual Studio 2010 e del .NET Framework 4.0 al 12 aprile 2010.
&lt;br /&gt;Per maggiori informazioni:
&lt;br /&gt;- &lt;a href="http://blogs.msdn.com/robcaron/archive/2010/01/13/9948172.aspx" title="Visual Studio 2010 and .NET Framework 4 Launch Date" target="_blank"&gt;http://blogs.msdn.com/robcaron/archive/2010/01/13/9948172.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.aspitalia.com/focuson/1132/12-Aprile-2010-Data-Ufficiale-Lancio-2010-.NET-Framework.aspx" title="12 aprile 2010: ecco la data ufficiale di lancio di VS 2010 e .NET Framework 4.0" target="_blank"&gt;http://www.aspitalia.com/focuson/1132/12-Aprile-2010-Data-Ufficiale-Lancio-2010-.NET-Framework.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2010.aspx" title="TAG: Visual Studio 2010"&gt;Visual Studio 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 4.0.aspx" title="TAG: .NET 4.0"&gt;.NET 4.0&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2010AndNetFramework4On12April2010.aspx" /><issued>2010-1-15T11:2:38+01:00</issued><modified>2010-1-15T11:2:38+01:00</modified></entry><entry><title>Visual Studio 2010 Beta 2</title><id>/Blog/VisualStudio2010Beta2.aspx</id><created>2009-10-22T10:22:42+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/VS_v_rgb_2.png" alt="Visual Studio 2010" style="float: right" /&gt;Devo dire che questo ottobre è una mese proprio ricco di novità !
&lt;br /&gt;Mentre restiamo in trepida attesa del rilascio della beta di SharePoint, ecco che arriva la beta 2 di Visual Studio 2010 e del .NET Framework 4.0 !
&lt;br /&gt;La pagina di riferimento per questa beta 2 è la seguente: &lt;a href="http://msdn.microsoft.com/it-it/vstudio/dd582936(en-us).aspx" title="Visual Studio 2010 and .NET Framework 4 Beta 2"&gt;http://msdn.microsoft.com/it-it/vstudio/dd582936(en-us).aspx&lt;/a&gt;
&lt;br /&gt;dalla quale è possibile scaricare sia le immagini .iso del nuovo ide di sviluppo e del framework sottostante, che tutte le versioni express, che le nuove versioni di Team Foundation Server e della suite di prodotti per il testing delle applicazioni.
&lt;br /&gt;
&lt;br /&gt;Mentre qua, trovate il documento di overview di ASP.NET 4 e quello dei cambiamenti applicati alla nuova beta:
&lt;br /&gt;&lt;a href="http://www.asp.net/learn/whitepapers/aspnet4/" title="ASP.NET 4 and Visual Studio 2010 Web Development Overview whitepaper"&gt;ASP.NET 4 and Visual Studio 2010 Web Development Overview whitepaper&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes" title="ASP.NET 4 Beta 2 breaking changes document"&gt;ASP.NET 4 Beta 2 breaking changes document&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2010.aspx" title="TAG: Visual Studio 2010"&gt;Visual Studio 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 4.0.aspx" title="TAG: .NET 4.0"&gt;.NET 4.0&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2010Beta2.aspx" /><issued>2009-10-22T10:22:42+01:00</issued><modified>2009-10-22T10:22:42+01:00</modified></entry><entry><title>Come effettuare rapidamente il sorting di una lista generica</title><id>/Blog/HowToSortListT.aspx</id><created>2009-2-19T18:42:52+01:00</created><content type="text/html" mode="escaped">Oggi avevo la necessità di ordinare una lista di oggetti custom, creata attraverso la lista generica List&lt;T&gt;. L'ordinamento però, prima lo dovevo fare su una particolare proprietà, poi su un altra.
&lt;br /&gt;Solitamente creavo un comparer personalizzato, ma ho trovato un modo veramente molto più veloce e leggibile.
&lt;br /&gt;Al metodo Sort() di tale lista, è possibile passare un delegato ed effettuare la comparazione dei valori in-line, sulle proprietà dei propri elementi custom.
&lt;br /&gt;Quindi, a fronte di un oggetto del genere:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; CustomItem
&lt;br /&gt;{
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; DateTime Date { get; set; }
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;double&lt;/span&gt; Value { get; set; }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ecco come possiamo rapidamento effettuare il sorting degli elementi, su proprietà diverse:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;List&lt;CustomItem&gt; list = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; List&lt;CustomItem&gt;();
&lt;br /&gt;
&lt;br /&gt;list.Add(&lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CustomItem() { Date = DateTime.Now, Value = 1.0 });
&lt;br /&gt;list.Add(&lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CustomItem() { Date = DateTime.Now.AddYears(1), Value = 0.5 });
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//sort sulla data&lt;/span&gt;
list.Sort(&lt;span style="color: #0000FF"&gt;delegate&lt;/span&gt;(CustomItem item1, CustomItem item2)
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; item1.Date.CompareTo(item2.Date);
&lt;br /&gt;});
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//sort su un double&lt;/span&gt;
list.Sort(&lt;span style="color: #0000FF"&gt;delegate&lt;/span&gt;(CustomItem item1, CustomItem item2)
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; item1.Value.CompareTo(item2.Value);
&lt;br /&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Il tutto senza dover creare un comparer ad hoc.
&lt;br /&gt;A mio parere, è una tecnica semplice e che velocizza notevolmente il lavoro.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="/Tags/Generics.aspx" title="TAG: Generics"&gt;Generics&lt;/a&gt;] [&lt;a href="/Tags/Comparer.aspx" title="TAG: Comparer"&gt;Comparer&lt;/a&gt;] [&lt;a href="/Tags/Sorting.aspx" title="TAG: Sorting"&gt;Sorting&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToSortListT.aspx" /><issued>2009-2-19T18:42:52+01:00</issued><modified>2009-2-19T18:42:52+01:00</modified></entry><entry><title>Service Pack 1 per Visual Studio 2008 e .NET Framework 3.5</title><id>/Blog/VisualStudio2008Framework35ServicePack1.aspx</id><created>2008-8-11T18:53:34+01:00</created><content type="text/html" mode="escaped">E' notizia di oggi il rilascio delle versioni 1.0 dei Service Pack di Visual Studio 2008 e del .NET Framework 3.5 !
&lt;br /&gt;Sono stati corretti dei bug e state fatte anche delle notevoli aggiunte.
&lt;br /&gt;Per quanto riguarda ASP.NET notiamo l'aggiunta di:&lt;ul&gt;&lt;li&gt;un sistema di Url Routing&lt;/li&gt;&lt;li&gt;Dynamic data controls&lt;/li&gt;&lt;/ul&gt;Altra importante novità è inoltre l'introduzione dell'ADO.NET Entity Framework, il sistema di mapping di oggetti a partire da una qualsiasi fonte di dati.
&lt;br /&gt;Questi i link per il download:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&amp;DisplayLang=en" title="Visual Studio 2008 Service Pack 1 (Web installer)"&gt;Visual Studio 2008 Service Pack 1 (Web installer)&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&amp;DisplayLang=en" title="Visual Studio 2008 Service Pack 1 (ISO)"&gt;Visual Studio 2008 Service Pack 1 (ISO)&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;displaylang=en" title=".NET Framework 3.5 Service Pack 1 (Web installer)"&gt;.NET Framework 3.5 Service Pack 1 (Web installer)&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe" title=".NET Framework 3.5 Service Pack 1 (EXE)"&gt;.NET Framework 3.5 Service Pack 1 (EXE)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: 
&lt;br /&gt;[&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 3.5.aspx" title="TAG: .NET 3.5"&gt;.NET 3.5&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2008Framework35ServicePack1.aspx" /><issued>2008-8-11T18:53:34+01:00</issued><modified>2008-8-11T18:53:34+01:00</modified></entry><entry><title>Happy hour tecnologici</title><id>/Blog/HappyHourTecnlogici.aspx</id><created>2008-3-10T15:56:12+01:00</created><content type="text/html" mode="escaped">Volevo segnalarvi un'interessantissima iniziativa dell'azienda per cui lavoro: gli &lt;a href="http://www.msys.it/eventi" title="Happy Hour Tecnologici"&gt;Happy Hour Tecnologici&lt;/a&gt; !
&lt;br /&gt;Una serie di mini-presentazioni sulle nuove tecnologie Microsoft seguite da un aperitivo offerto ai partecipanti.
&lt;br /&gt;Questi gli argomenti trattati:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.msys.it/Eventi/Happy+hour+tecnologici+-+Unified+Communications.htm" title="12/06/2008: Happy hour tecnologici - Unified Communications"&gt;&gt; 12/06/2008: Happy hour tecnologici - Unified Communications&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.msys.it/Eventi/Happy+hour+tecnologici+-+Windows+2008.htm" title="15/05/2008: Happy hour tecnologici - Windows 2008"&gt;&gt; 15/05/2008: Happy hour tecnologici - Windows 2008&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.msys.it/Eventi/Happy+hour+tecnologici+-+RFID+e+ERP.htm" title="17/04/2008: Happy hour tecnologici - RFID e ERP"&gt;&gt; 17/04/2008: Happy hour tecnologici - RFID e ERP&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.msys.it/Eventi/Happy+hour+tecnologici+-+Business+Intelligence.htm" title="13/03/2008: Happy hour tecnologici - Business Intelligence"&gt;&gt; 13/03/2008: Happy hour tecnologici - Business Intelligence&lt;/a&gt;
&lt;br /&gt;&lt;a href="http://www.msys.it/Eventi/Happy+hour+tecnologici+-+MOSS+2007.htm" title="26/02/2008: Happy hour tecnologici - MOSS 2007"&gt;&gt; 26/02/2008: Happy hour tecnologici - MOSS 2007&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Eventi.aspx" title="TAG: Eventi"&gt;Eventi&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Microsys.aspx" title="TAG: Microsys"&gt;Microsys&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HappyHourTecnlogici.aspx" /><issued>2008-3-10T15:56:12+01:00</issued><modified>2008-3-10T15:56:12+01:00</modified></entry><entry><title>Silverlight 2.0 beta 1</title><id>/Blog/Silverlight2Beta1.aspx</id><created>2008-3-6T11:47:46+01:00</created><content type="text/html" mode="escaped">Dal MIX 2008 è arrivato l'annuncio della Beta 1 di Silverlight 2.0 !
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;displaylang=en" title="Download Silverlight 2.0 Beta 1"&gt;Qui per il download&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Silverlight.aspx" title="TAG: Silverlight"&gt;Silverlight&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Silverlight2Beta1.aspx" /><issued>2008-3-6T11:47:46+01:00</issued><modified>2008-3-6T11:47:46+01:00</modified></entry><entry><title>Nuove lezioni nella guida a Visual Studio 2008: supporto per applicazioni desktop</title><id>/Blog/NuoveLezioniGuidaVisualStudio2008_DesktopDeveloping.aspx</id><created>2008-2-18T13:59:51+01:00</created><content type="text/html" mode="escaped">Come &lt;a href="http://www.peppedotnet.it/Blog/NuoveLezioniGuidaVisualStudio2008_DataAccess.aspx" title="Nuove lezioni nella guida a Visual Studio 2008: supporto per l'accesso ai dati"&gt;preannunciato&lt;/a&gt;, sono state oggi pubblicate le lezioni riguardanti lo sviluppo di applicazioni desktop con Visual Studio .NET 2008, all'interno di &lt;a href="http://www.html.it" title="html.it"&gt;html.it&lt;/a&gt; !
&lt;br /&gt;Questi gli argomenti trattati:&lt;ul&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3532/applicazioni-windows-form-wpf-e-wcf/" title="Applicazioni Windows Form, WPF e WCF"&gt;Applicazioni Windows Form, WPF e WCF&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3533/class-designer/" title="Class Designer"&gt;Class Designer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3535/nuove-feature-per-il-deployment/" title="Nuove feature per il deployment"&gt;Nuove feature per il deployment&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Per completare la guiad mancano solamente l'elenco degli shortcut di Visual C# .NET e Visual Basic .NET !
&lt;br /&gt;Buona lettura !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WPF.aspx" title="TAG: WPF"&gt;WPF&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WCF.aspx" title="TAG: WCF"&gt;WCF&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/ClickOnce.aspx" title="TAG: ClickOnce"&gt;ClickOnce&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/NuoveLezioniGuidaVisualStudio2008_DesktopDeveloping.aspx" /><issued>2008-2-18T13:59:51+01:00</issued><modified>2008-2-18T13:59:51+01:00</modified></entry><entry><title>Nuove lezioni nella guida a Visual Studio 2008: supporto per l'accesso ai dati</title><id>/Blog/NuoveLezioniGuidaVisualStudio2008_DataAccess.aspx</id><created>2008-2-11T19:33:27+01:00</created><content type="text/html" mode="escaped">Come gli ultimi 3 lunedì, anche oggi sono state pubblicate delle nuove lezioni alla guida a Visual Studio 2008, scritta da me e presente all'interno di &lt;a href="http://www.html.it" title="html.it"&gt;html.it&lt;/a&gt; !
&lt;br /&gt;Questa però è la volta dell'accesso ai dati.
&lt;br /&gt;Sono infatti disponibili le lezioni su:&lt;ul&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3525/introduzione-alla-gestione-dei-dati/" title="Introduzione alla gestione dei dati"&gt;Introduzione alla gestione dei dati&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3526/dataset-designer/" title="Dataset designer"&gt;DataSet designer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3527/objectrelational-designer/" title="Object-Relational designer"&gt;Object-Relational designer&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Il prossimo lunedì sarà invece la volta del supporto per lo sviluppo di applicazioni client.
&lt;br /&gt;Buona lettura !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/DataSet.aspx" title="TAG: DataSet"&gt;DataSet&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object-Relational designer.aspx" title="TAG: Object-Relational designer"&gt;Object-Relational designer&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/NuoveLezioniGuidaVisualStudio2008_DataAccess.aspx" /><issued>2008-2-11T19:33:27+01:00</issued><modified>2008-2-11T19:33:27+01:00</modified></entry><entry><title>Le linee guide per fare domande</title><id>/Blog/HowToAskAQuestion.aspx</id><created>2008-2-7T13:52:43+01:00</created><content type="text/html" mode="escaped">Un mio collega mi ha segnalato questo splendido articolo della KB Microsoft, scritto da un MVP, che spiega le linee guida su come fare domande in forum pubblici, newsgroup, ecc...
&lt;br /&gt;Il testo è veramente fantastico. Consiglio a tutti di leggerlo.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/555375/en-us" title="How to ask a question"&gt;http://support.microsoft.com/kb/555375/en-us&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Community.aspx" title="TAG: Community"&gt;Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToAskAQuestion.aspx" /><issued>2008-2-7T13:52:43+01:00</issued><modified>2008-2-7T13:52:43+01:00</modified></entry><entry><title>Le novit&#224; di C# 3.0</title><id>/Blog/CSharp3NewFeatures.aspx</id><created>2008-2-6T15:46:51+01:00</created><content type="text/html" mode="escaped">E' uscita oggi la sconda parte del mio articolo sulle novità di C# 3.0 !
&lt;br /&gt;
&lt;br /&gt;Vi lascio il link:
&lt;br /&gt;&lt;a href="http://aspnet.html.it/articoli/leggi/2510/le-novita-di-c-30/" title="Le novità di C# 3.0"&gt;http://aspnet.html.it/articoli/leggi/2510/le-novita-di-c-30/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/C# 3.0.aspx" title="TAG: C# 3.0"&gt;C# 3.0&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CSharp3NewFeatures.aspx" /><issued>2008-2-6T15:46:51+01:00</issued><modified>2008-2-6T15:46:51+01:00</modified></entry><entry><title>Nuove lezioni nella guida a Visual Studio 2008: progettazione web</title><id>/Blog/NuoveLezioniGuidaVisualStudio2008 _WebDevelopment.aspx</id><created>2008-2-4T13:47:34+01:00</created><content type="text/html" mode="escaped">Come gli scorsi due lunedì, anche oggi sono state pubblicate nuove lezioni della mia guida a Visual Studio .NET 2008 su html.it; in particolare è stato aggiornato il capitolo per il supporto allo sviluppo di applicazioni web.
&lt;br /&gt;Questi gli argomenti trattati:&lt;ul&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3516/progetti-per-web-application/" title="Progetti per Web Application"&gt;Progetti per Web Application&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3517/master-page-annidate/" title="Master page annidate"&gt;Master page annidate&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3518/javascript-e-ajax/" title="Javascript ed Ajax"&gt;Javascript ed Ajax&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Nelle prossime settimane invece, verranno visti il supporto per l'accesso ai dati e per lo sviluppo di applicazioni client.
&lt;br /&gt;Buona lettura !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/NuoveLezioniGuidaVisualStudio2008 _WebDevelopment.aspx" /><issued>2008-2-4T13:47:34+01:00</issued><modified>2008-2-4T13:47:34+01:00</modified></entry><entry><title>Nuove lezioni nella guida a Visual Studio 2008</title><id>/Blog/NuoveLezioneGuidaVisualStudio2008.aspx</id><created>2008-1-28T13:10:48+01:00</created><content type="text/html" mode="escaped">Sono appena state pubblicate 5 nuove lezioni della mia guida a &lt;a href="http://editor.html.it/guide/leggi/139/guida-visual-studio-2008/" title="Guida a Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt; su &lt;a href="html.it" title="http://www.html.it"&gt;html.it&lt;/a&gt; !
&lt;br /&gt;L'aggiornamento di oggi vede quindi questi nuovi argomenti:&lt;ul&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3504/breakpoint-e-debug-a-runtime/" title="Breakpoint e debug a runtime"&gt;Breakpoint e debug a runtime&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3505/soluzioni-e-progetti/" title="Soluzioni e progetti"&gt;Soluzioni e progetti&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3506/multitargeting/" title="Multi-targeting"&gt;Multi-targeting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3507/linterfaccia-di-sviluppo-per-il-web/" title="L'interfaccia di sviluppo per il Web"&gt;L'interfaccia di sviluppo per il Web &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://editor.html.it/guide/lezione/3508/tipologie-di-progetto/" title="Tipologie di progetto"&gt;Tipologie di progetto&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Buona lettura !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 3.5.aspx" title="TAG: .NET 3.5"&gt;.NET 3.5&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/NuoveLezioneGuidaVisualStudio2008.aspx" /><issued>2008-1-28T13:10:48+01:00</issued><modified>2008-1-28T13:10:48+01:00</modified></entry><entry><title>E-Book sulle specifiche di C# 3.0</title><id>/Blog/CSharp3.0E-Book.aspx</id><created>2008-1-28T12:21:52+01:00</created><content type="text/html" mode="escaped">Ho appena scoperto questo interessantissimo post riguardo le specifiche di C# 3.0 !
&lt;br /&gt;Viene segnalato un e-book completo con l'elenco di tutte le nuove specifiche del linguaggio Micorosft da scaricare gratuitamente.
&lt;br /&gt;Questo il link:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/mapo/archive/2008/01/28/c-3-0-language-specification-ebook.aspx" title="E-Book sulle specifiche di C# 3.0"&gt;http://blogs.msdn.com/mapo/archive/2008/01/28/c-3-0-language-specification-ebook.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A breve uscirà, sempre su &lt;a href="http://www.html.it" title="html.it"&gt;html.it&lt;/a&gt;, un mio articolo di introduzione alle novità di questa versione di C#. 
&lt;br /&gt;Vi consiglio di leggere entrambi, perchè le aggiunte sono davvero belle !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/C# 3.0.aspx" title="TAG: C# 3.0"&gt;C# 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 3.5.aspx" title="TAG: .NET 3.5"&gt;.NET 3.5&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CSharp3.0E-Book.aspx" /><issued>2008-1-28T12:21:52+01:00</issued><modified>2008-1-28T12:21:52+01:00</modified></entry><entry><title>Guida a Visual Studio 2008</title><id>/Blog/GuidaVisualStudio2008.aspx</id><created>2008-1-21T17:32:57+01:00</created><content type="text/html" mode="escaped">Da oggi è on-line su &lt;a href="http://www.html.it" title="html.it"&gt;html.it&lt;/a&gt; la mia guida a Visual Studio .NET 2008. Ogni settimana verrano pubblicate quattro nuove lezioni per cui tenete d'occhio il sito.
&lt;br /&gt;Nelle prossime lezioni si vedranno tutte le novità inserite in questa nuova versione dell'IDE, quindi il nuovo designer per la progettazione di pagine web, le nuove funzionalità per supportare LINQ e i suoi derivati e le nuove caratteristiche di sviluppo per applicazioni client. Infine verrà pubblicata la lista degli shortcut sia per Visual C# .NET che per Visual Basic .NET !
&lt;br /&gt;E' stato un bel lavoro questa volta, a differenza degli articoli che scrivo con più facilità.
&lt;br /&gt;Ah dimenticavo.. il link :)
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://editor.html.it/guide/leggi/139/guida-visual-studio-2008/" title="Guida a Visual Studio 2008"&gt;http://editor.html.it/guide/leggi/139/guida-visual-studio-2008/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi consiglio di seguirla perchè gli argomenti trattati sono davvero tanti e sopratutto vengono presentate tutte le novità aggiunte a supporto della versione 3.5 del .NET Framework.
&lt;br /&gt;A presto
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/GuidaVisualStudio2008.aspx" /><issued>2008-1-21T17:32:57+01:00</issued><modified>2008-1-21T17:32:57+01:00</modified></entry><entry><title>Disponibile una parte del codice sorgente del .NET Framework 3.5</title><id>/Blog/DisponibileUnaParteDelCodiceSorgenteDel.NETFramework3.5.aspx</id><created>2008-1-17T10:24:20+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://weblogs.asp.net/scottgu/default.aspx" title="Scott Guthrie"&gt;Scott Guthrie&lt;/a&gt; annuncia oggi il rilascio di una parte del codice sorgente del .NET Framework 3.5 !
&lt;br /&gt;Nel &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" title=".NET Framework Library Source Code now available"&gt;suo post&lt;/a&gt; è presente la lista delle librerie rilasciate e le istruzioni per aggiungere le giuste referenze all'interno di Visual Studio .NET 2008.
&lt;br /&gt;Inoltre, è presente uno &lt;a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx" title="Configuring Visual Studio to Debug .NET Framework Source Code"&gt;stupendo post di Shawn Burke&lt;/a&gt; con le istruzioni per configurare l'IDE in modo tale da poter effettuare il debug all'interno del codice sorgente del framework.
&lt;br /&gt;L'unica pecca è che tale funzionalità non è ancora disponibile per le versioni Express di Visual Studio.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET 3.5.aspx" title="TAG: .NET 3.5"&gt;.NET 3.5&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DisponibileUnaParteDelCodiceSorgenteDel.NETFramework3.5.aspx" /><issued>2008-1-17T10:24:20+01:00</issued><modified>2008-1-17T10:24:20+01:00</modified></entry><entry><title>LINQItalia.com e SilverlightItalia.com</title><id>/Blog/LinqItaliaSilverlightItalia.aspx</id><created>2008-1-15T20:5:8+01:00</created><content type="text/html" mode="escaped">Ho appena letto una &lt;a href="http://blogs.aspitalia.com/daniele/post2206/10annidi.ASPItalia.com-Nascono-LINQItalia.com-SilverlightItalia.com.aspx" title="bellissima notizia"&gt;bellissima notizia&lt;/a&gt; sul blog di &lt;a href="http://blogs.aspitalia.com/daniele/" title="Blog di Daniele Bochicchio"&gt;Daniele Bochicchio&lt;/a&gt;.
&lt;br /&gt;Dal network in cui appertengono già ASPItalia.com e WinFXItalia.com, nasceranno altri due siti:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.linqitalia.com/" title="LINQItalia.com"&gt;LINQItalia.com&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.silverlightitalia.com/" title=""&gt;SilverlightItalia.com&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Complimenti davvero a tutto lo staff ! Siete grandi !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/ASPItalia.aspx" title="TAG: ASPItalia"&gt;ASPItalia&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WinFXItalia.aspx" title="TAG: WinFXItalia"&gt;WinFXItalia&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/LINQ.aspx" title="TAG: LINQ"&gt;LINQ&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Silverlight.aspx" title="TAG: Silverlight"&gt;Silverlight&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/LinqItaliaSilverlightItalia.aspx" /><issued>2008-1-15T20:5:8+01:00</issued><modified>2008-1-15T20:5:8+01:00</modified></entry><entry><title>Come utilizzare Viusal Source Safe 2005 con Visual Studio 2008</title><id>/Blog/HowToUseSourceSafe2005WithVisualStudio2008.aspx</id><created>2007-11-27T14:13:33+01:00</created><content type="text/html" mode="escaped">Con l'arrivo di Visual Studio .NET 2008 era previsto anche il rilascio di un'aggiornamento per la versione 2005 di Visual Source Safe, in modo tale da permetterne l'utilizzo con il nuovo IDE.
&lt;br /&gt;Come si evince però dai blog di &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/26/answers-to-a-few-vs-2008-trial-edition-tfs-2008-and-sourcesafe-questions.aspx" title="Blog di Scott Guthrie"&gt;Scott Guthrie&lt;/a&gt; e &lt;a href="http://blogs.msdn.com/bharry/archive/2007/11/24/update-for-visual-sourcesafe-coming.aspx" title="Blog di Brian Harry"&gt;Brian Harry&lt;/a&gt;, si è verifcato un problema all'utlimo che ha posticipato il rilascio di tale aggiornamento a metà dicembre.
&lt;br /&gt;Per ora è comunque disponibile l'aggiornamento in versione CTP a &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=FAF41EDD-924D-449F-AEFC-9C86DD499720&amp;displaylang=en" title="Visual Source Safe 2005 Update CTP"&gt;questo indirizzo&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2008.aspx" title="TAG: Visual Studio 2008"&gt;Visual Studio 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Source Safe.aspx" title="TAG: Source Safe"&gt;Source Safe&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToUseSourceSafe2005WithVisualStudio2008.aspx" /><issued>2007-11-27T14:13:33+01:00</issued><modified>2007-11-27T14:13:33+01:00</modified></entry><entry><title>I cookie in Windows Vista</title><id>/Blog/WindowsVistaCookieLocation.aspx</id><created>2007-11-26T18:16:25+01:00</created><content type="text/html" mode="escaped">Oggi mi son preso dei biglietti per un concerto qui a Milano. Inizialmente non riuscivo a prenderli a causa di un errore sul cookie che creava il sito da cui dovevo acquistare. Mi son messo a cercare quindi la cartella dei cookie... dov'è finita ?
&lt;br /&gt;La potete trovare a questo percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-stle: italic; margin-left: 10px"&gt;&lt;Local drive&gt;:\Users\[username]\AppData\Roaming\Microsoft\Windows\Cookies\&lt;/div&gt;
&lt;br /&gt;Attenzione inoltre, che ci sono tantissimi altri cookie nella sotto cartella "Low":
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-stle: italic; margin-left: 10px"&gt;&lt;Local drive&gt;:\Users\[username]\AppData\Roaming\Microsoft\Windows\Cookies\Low\&lt;/div&gt;
&lt;br /&gt;Se non riuscite a vederla, dovete abilitare la visualizzazione dei file protetti dal sistema, all'interno della maschera "Opzioni cartella".
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Windows Vista.aspx" title="TAG: Windows Vista"&gt;Windows Vista&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WindowsVistaCookieLocation.aspx" /><issued>2007-11-26T18:16:25+01:00</issued><modified>2007-11-26T18:16:25+01:00</modified></entry><entry><title>Visual Studio .NET 2008 RTM</title><id>/Blog/VisualStudioNET2008RTM.aspx</id><created>2007-11-19T17:57:26+01:00</created><content type="text/html" mode="escaped">E' da questa mattina che è possibile scaricare la RTM di Visual Studio .NET 2008 sul sito di MSDN Subscription, mentre da oggi pomeriggio sono uscite per il pubblico le versioni express a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/express/download/" title="Visual Studio .NET 2008 Express Edition RTM"&gt;http://www.microsoft.com/express/download/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/.NET 3.5.aspx" title="TAG: .NET 3.5"&gt;.NET 3.5&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2008.aspx" title="TAG: Visual Studio .NET 2008"&gt;Visual Studio .NET 2008&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudioNET2008RTM.aspx" /><issued>2007-11-19T17:57:26+01:00</issued><modified>2007-11-19T17:57:26+01:00</modified></entry><entry><title>Live Web Translator</title><id>/Blog/LiveWebTranslator.aspx</id><created>2007-11-16T22:11:15+01:00</created><content type="text/html" mode="escaped">Mi sono accorto oggi di un nuovo servizio della famiglia "Live", un bel traduttore on-line che traduce le pagine del proprio sito nella lingua che desidera il visitatore.
&lt;br /&gt;Sembra davvero bello. Chiaramente non è perso un attimo per metterlo anche sul mio sito (in fondo a destra).
&lt;br /&gt;Questo il link di riferimento del servizio: &lt;a href="http://translator.live.com/AddIn.aspx" title="Live Web Translator"&gt;http://translator.live.com/AddIn.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Live.aspx" title="TAG: Live"&gt;Live&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Web Translator.aspx" title="TAG: Web Translator"&gt;Web Translator&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/LiveWebTranslator.aspx" /><issued>2007-11-16T22:11:15+01:00</issued><modified>2007-11-16T22:11:15+01:00</modified></entry><entry><title>Visual Studio .NET 2008 e .NET Framework 3.5 a novembre !</title><id>/Blog/VisualStudio2006OutInNovember.aspx</id><created>2007-11-6T9:54:37+01:00</created><content type="text/html" mode="escaped">E' notizia di questi giorni, direttamente del TechEd 2007 a Barcellona, l'uscita in RTM per i sottoscritti all'abbonamento MSDN di Visual Studio .NET 2008 e del .NET Framework 3.5 !!
&lt;br /&gt;Qui c'è l'annuncio:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/presspass/press/2007/nov07/11-05TechEdDevelopersPR.mspx" title="Annuncio rilascio in RTM di Visual Studio .NET 2008 e del .NET Framework 3.5"&gt;http://www.microsoft.com/presspass/press/2007/nov07/11-05TechEdDevelopersPR.mspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Eh si.. è arrivato il momento di cambiare di nuovo..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 2008.aspx" title="TAG: Visual Studio 2008"&gt;Visual Studio 2008&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET Framework 3.5.aspx" title="TAG: .NET Framework 3.5"&gt;.NET Framework 3.5&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio2006OutInNovember.aspx" /><issued>2007-11-6T9:54:37+01:00</issued><modified>2007-11-6T9:54:37+01:00</modified></entry><entry><title>Utilities.NET</title><id>/Blog/UtilitiesForDotNet.aspx</id><created>2007-10-3T14:9:11+01:00</created><content type="text/html" mode="escaped">Volevo segnalare questo interessante progetto inserito da poco su CodePlex: &lt;a href="http://www.codeplex.com/Utilities" title="Utilities.NET"&gt;Utilities.NET&lt;/a&gt; !
&lt;br /&gt;E' una libreria di classi utili a risolvere velocemente e semplicemente le operazioni più comuni che ci si trova di fronte nella programmazione .NET di tutti i giorni.
&lt;br /&gt;Queste le aree coperte dalla classe di questa libreria:
&lt;br /&gt;
&lt;br /&gt;- Collections
&lt;br /&gt;- Configuration
&lt;br /&gt;- Type converters
&lt;br /&gt;- Database
&lt;br /&gt;- Email
&lt;br /&gt;- Files and streams
&lt;br /&gt;- Events
&lt;br /&gt;- Validation
&lt;br /&gt;- Reflection
&lt;br /&gt;- Resources
&lt;br /&gt;- Services
&lt;br /&gt;- Testing
&lt;br /&gt;- Text
&lt;br /&gt;- Threading
&lt;br /&gt;- Web and ASP.NET
&lt;br /&gt;- Xml 
&lt;br /&gt;
&lt;br /&gt;Io l'ho appena scaricata e mi sembra proprio ottima !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Utilities.NET.aspx" title="TAG: Utilities.NET"&gt;Utilities.NET&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CodePlex.aspx" title="TAG: CodePlex"&gt;CodePlex&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET.aspx" title="TAG: .NET"&gt;.NET&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/UtilitiesForDotNet.aspx" /><issued>2007-10-3T14:9:11+01:00</issued><modified>2007-10-3T14:9:11+01:00</modified></entry><entry><title>COM error 80070005 nell'utilizzo delle classi interop di Office 2007</title><id>/Blog/COMError80070005Office2007.aspx</id><created>2007-9-14T19:12:53+01:00</created><content type="text/html" mode="escaped">E' un errore generale degli oggetti COM, in quanto non riguarda solo Office 2007, ma la maggiorparte delle applicazioni che forniscono un proprio modello ad oggetti. Questo il testo:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-style: italic; color: red;"&gt;Retrieving the COM class factory for component with CLSID {A1093992-8BEB-4307-943B-3FF7023AD1E2} failed due to the following error: 80070005.&lt;/div&gt;
&lt;br /&gt;E' un errore di sicurezza, che viene scatenato quando un utente cerca di utilizzare il modello ad oggetti di una particolare applicazione, senza averne i diritti. Lo stesso accade se tali operazioni vengono fatte da un'applicazione web, in quanto l'utente ASPNET non ha tali permessi.
&lt;br /&gt;Nel dettaglio dell'utilizzo delle librerie interop di Office 2007, tale errore viene scatenato quando si cerca di creare una nuova istanza della classe ApplicationClass (di qualsiasi namespace di interop sia).
&lt;br /&gt;Ecco le operazioni per risolvere tale errore:&lt;ul&gt;&lt;li&gt;eseguire il comando DCOMCNFG dal prompt dei comandi (per aprire la finestra dei component services)&lt;/li&gt;&lt;li&gt;Espandere l'albero secondo questo percorso: Component services &gt; Computers &gt; My computer &gt; DCOM config&lt;/li&gt;&lt;li&gt;Selezionare l'applicazione desiderata e andare sule proprietà (facendo click con il pulsante destro del mouse)&lt;/li&gt;&lt;li&gt;Aprire poi il tab Security e modificare le autorizzazioni di configurazione, accesso, esecuzione e attivazione dell'applicazione scelta&lt;/li&gt;&lt;/ul&gt;Queste operazioni sono necessarie per il corretto utilizzo del modello ad oggetti esposto dalla maggiorparte dei software d'oggi.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/COM.aspx" title="TAG: COM"&gt;COM&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2007.aspx" title="TAG: Office 2007"&gt;Office 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSTO.aspx" title="TAG: VSTO"&gt;VSTO&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/COMError80070005Office2007.aspx" /><issued>2007-9-14T19:12:53+01:00</issued><modified>2007-9-14T19:12:53+01:00</modified></entry><entry><title>Come convertire documenti Visio in Pdf con Visio 2007</title><id>/Blog/HowToConvertVisio2007DocumentsToPdf.aspx</id><created>2007-9-12T12:51:3+01:00</created><content type="text/html" mode="escaped">Dato che c'ero, dopo l'&lt;a href="http://www.peppedotnet.it/Blog/HowToCovertOffice2007DocumentsInPDF.aspx" title="Come convertire documenti PowerPoint in PDF"&gt;implementazione per PowerPoint&lt;/a&gt;, mi son fatto anche quella per Visio. Ve la lascio, che magari a qualcuno serve !
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Microsoft.Office.Interop.Visio;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; ConvertVSD(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; inputFile, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; outputFile)
&lt;br /&gt;{
&lt;br /&gt;    ApplicationClass visio = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ApplicationClass();
&lt;br /&gt;    Document doc = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;try&lt;/span&gt;
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//apro il documento
&lt;/span&gt;
        doc = visio.Documents.Open(inputFile);
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//definisco i parametri per la conversione
&lt;/span&gt;
        VisFixedFormatTypes formato = VisFixedFormatTypes.visFixedFormatPDF;
&lt;br /&gt;        VisDocExIntent intent = VisDocExIntent.visDocExIntentPrint;
&lt;br /&gt;        VisPrintOutRange printRange = VisPrintOutRange.visPrintAll;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;object&lt;/span&gt; paramMissing = Type.Missing;
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//converto in PDF
&lt;/span&gt;
        doc.ExportAsFixedFormat(formato, outputFile, intent,
&lt;br /&gt;                                printRange, 0, 100000, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;,
&lt;br /&gt;                                &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;, paramMissing);
&lt;br /&gt;    }
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;catch&lt;/span&gt; (Exception exe)
&lt;br /&gt;    {
&lt;br /&gt;        Console.WriteLine(exe.Message + exe.StackTrace);
&lt;br /&gt;    }
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;finally&lt;/span&gt;
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (doc != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            doc.Close();
&lt;br /&gt;            doc = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (visio != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            visio.Quit();
&lt;br /&gt;            visio = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        GC.Collect();
&lt;br /&gt;        GC.WaitForPendingFinalizers();
&lt;br /&gt;        GC.Collect();
&lt;br /&gt;        GC.WaitForPendingFinalizers();
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ah, non dimenticatevi di aggiungere la reference alla libreria "Microsoft Visio 12.0 Type Library" !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 2007.aspx" title="TAG: Office 2007"&gt;Office 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visio.aspx" title="TAG: Visio"&gt;Visio&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSTO.aspx" title="TAG: VSTO"&gt;VSTO&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToConvertVisio2007DocumentsToPdf.aspx" /><issued>2007-9-12T12:51:3+01:00</issued><modified>2007-9-12T12:51:3+01:00</modified></entry><entry><title>Microsoft Security Bullettin MS07-040</title><id>/Blog/MSSecurityBullettinMS70-040.aspx</id><created>2007-9-12T10:9:58+01:00</created><content type="text/html" mode="escaped">Ieri sera Microsoft Update mi ha segnalato 3 nuovi aggiornamenti, uno dei quali era per una vulnerabilità di Visual Studio .NET 2005. Sono circa 12 mb di update.
&lt;br /&gt;Le informazioni riguardo tale aggiornamento le potete trovare qua:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms07-040.mspx" title="Microsoft Security Bullettin MS07-040"&gt;http://www.microsoft.com/technet/security/bulletin/ms07-040.mspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Bullettin.aspx" title="TAG: Bullettin"&gt;Bullettin&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio .NET 2005.aspx" title="TAG: Visual Studio .NET 2005"&gt;Visual Studio .NET 2005&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MSSecurityBullettinMS70-040.aspx" /><issued>2007-9-12T10:9:58+01:00</issued><modified>2007-9-12T10:9:58+01:00</modified></entry><entry><title>Eccezione COM sull'apertura di documenti Excel 2007</title><id>/Blog/COMExceptionOpenExcelWorkbook2007.aspx</id><created>2007-9-10T15:39:10+01:00</created><content type="text/html" mode="escaped">Sempre riguardo la conversione di documenti Office 2007 in PDF, mi è capitata questa cosa. Con documenti di word e powerpoint (creati con versoni precedenti di Office) non ho avuti mai problemi, invece con tutti i workbook excel che cercavo di aprire (richiamando il metodo Open), inizialmente mi tornava sempre questa eccezione COM:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-style: italic; color: red"&gt;Formato vecchio o libreria di tipo non valido. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))&lt;/div&gt;
&lt;br /&gt;Questo perchè ho installato il pacchetto Office 2007 su un Windows XP in lingua italiana. Questo problema penso che attacchi Excel per il fatto che è basato molto sul tipo di lingua con cui vengono gestite le date e i valori numerici.
&lt;br /&gt;Perciò .. Come fare ?
&lt;br /&gt;Alla fine è risultato abbastanza semplice... serve una classe che durante le operazioni con il modello ad oggetti di Excel, cambi semplicemente la cultura del thread corrente mettendola allo stesso valore della lingua con cui è stato installato Office 2007:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; SwitchCulture : IDisposable
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; CultureInfo originalCulture = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; SwitchCulture()
&lt;br /&gt;    {
&lt;br /&gt;        originalCulture = Thread.CurrentThread.CurrentCulture;
&lt;br /&gt;        Thread.CurrentThread.CurrentCulture = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CultureInfo(&lt;span style="color: #A31515"&gt;"en-US"&lt;/span&gt;);
&lt;br /&gt;    }
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; Dispose()
&lt;br /&gt;    {
&lt;br /&gt;        Thread.CurrentThread.CurrentCulture = originalCulture;
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Da utilizzare in questo modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Microsoft.Office.Interop.Excel;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; ExcelToPdf(SPWeb web, SPListItem newItem, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; filename, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; fileurl)
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (&lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SwitchCultureInfo())
&lt;br /&gt;    {
&lt;br /&gt;        ApplicationClass excelApplication = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ApplicationClass();
&lt;br /&gt;        Workbook excelWorkBook = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;object&lt;/span&gt; paramMissing = Type.Missing;        
&lt;br /&gt;            
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//parametri ...            
&lt;/span&gt;

&lt;br /&gt;        excelWorkBook = excelApplication.Workbooks.Open(fileName.ToString(),
&lt;br /&gt;                paramMissing, paramMissing, paramMissing, paramMissing,
&lt;br /&gt;                paramMissing, paramMissing, paramMissing, paramMissing,
&lt;br /&gt;                paramMissing, paramMissing, paramMissing, paramMissing,
&lt;br /&gt;                paramMissing, paramMissing);
&lt;br /&gt;    }
&lt;br /&gt;}
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Fatto questo vedrete che l'apertura di un workbook Excel attraverso il modello ad oggetti andrà sempre liscia come l'olio.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 2007.aspx" title="TAG: Office 2007"&gt;Office 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Excel.aspx" title="TAG: Excel"&gt;Excel&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSTO.aspx" title="TAG: VSTO"&gt;VSTO&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/COMExceptionOpenExcelWorkbook2007.aspx" /><issued>2007-9-10T15:39:10+01:00</issued><modified>2007-9-10T15:39:10+01:00</modified></entry><entry><title>Convertire documenti in PDF con Office 2007</title><id>/Blog/HowToCovertOffice2007DocumentsInPDF.aspx</id><created>2007-9-10T11:23:47+01:00</created><content type="text/html" mode="escaped">E' ormai da un pò di tempo che Microsoft ha rilasciato questo il plugin &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en" title="Microsoft Save as PDF or XPS"&gt;Microsoft Save as PDF or XPS&lt;/a&gt;, per permettere la conversione in PDF dei documenti compatibili con i programmi del pacchetto Office 2007.
&lt;br /&gt;E siccome il livello di programmabilità di Office è cresciuto notevolemente, sempre attraverso questo plugin e all'installazione degli Interop Assemblies per Office 2007, è possibile effettuare le medesime conversioni via codice, sia da applicazioni ASP.NET che da applicazione Windows.
&lt;br /&gt;I requisiti sono:&lt;ul&gt;&lt;li&gt;Microsoft Office 2007, installato sulla macchina&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;displaylang=en" title="Microsoft Save as PDF or XPS"&gt;Plugin "Microsoft Save as PDF or XPS"&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59DAEBAA-BED4-4282-A28C-B864D8BFA513&amp;displaylang=en" title="Office 2007 Redistributable Primary Interop Assemblies"&gt;Office 2007 Redistributable Primary Interop Assemblies&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Su MSDN trovate due how-to visuali su come trasformare &lt;a href="http://msdn2.microsoft.com/en-us/library/bb412305.aspx" title="Convert Word 2007 documents to PDF"&gt;documenti Word 2007&lt;/a&gt; e &lt;a href="http://msdn2.microsoft.com/en-us/library/bb407651.aspx" title="Convert Workbook Excel 2007 to PDF"&gt;Workbook Excel 2007&lt;/a&gt; in formato PDF (o XPS). Per mie necessità, ho sviluppato anche il codice per la trasformazione di presentazioni PowerPoint. Eccolo qua:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Microsoft.Office.Interop.PowerPoint;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; Microsoft.Office.Core;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; ConvertPPT(&lt;span style="color: #0000FF"&gt;object&lt;/span&gt; inputFile, &lt;span style="color: #0000FF"&gt;object&lt;/span&gt; outputFile)
&lt;br /&gt;{
&lt;br /&gt;    ApplicationClass powerpoint = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ApplicationClass();
&lt;br /&gt;    Presentation ppt = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;object&lt;/span&gt; paramMissing = Type.Missing;
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;try&lt;/span&gt;
&lt;br /&gt;    {                
&lt;br /&gt;
&lt;br /&gt;        PpFixedFormatType formato = PpFixedFormatType.ppFixedFormatTypePDF;
&lt;br /&gt;        PpFixedFormatIntent intent = PpFixedFormatIntent.ppFixedFormatIntentPrint;
&lt;br /&gt;        PpPrintRangeType range = PpPrintRangeType.ppPrintAll;
&lt;br /&gt;        MsoTriState paramFalse = MsoTriState.msoFalse;
&lt;br /&gt;        MsoTriState paramTrue = MsoTriState.msoTrue;
&lt;br /&gt;        PpPrintOutputType outputType = PpPrintOutputType.ppPrintOutputSlides;
&lt;br /&gt;        PpPrintHandoutOrder handoutOrder = PpPrintHandoutOrder.ppPrintHandoutHorizontalFirst;
&lt;br /&gt;
&lt;br /&gt;        ppt = powerpoint.Presentations.Open(inputFile.ToString(), paramFalse, paramFalse, paramFalse);
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (ppt != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            ppt.ExportAsFixedFormat(outputFile.ToString(), formato, intent,
&lt;br /&gt;                paramTrue, handoutOrder, outputType, paramFalse, &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;,
&lt;br /&gt;                range, &lt;span style="color: #A31515"&gt;""&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;, paramMissing);
&lt;br /&gt;        }
&lt;br /&gt;    }
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;catch&lt;/span&gt; (Exception exe)
&lt;br /&gt;    {
&lt;br /&gt;        Console.WriteLine(exe.Message + exe.StackTrace);
&lt;br /&gt;    }
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;finally&lt;/span&gt;
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (ppt != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            ppt.Close();
&lt;br /&gt;            ppt = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (powerpoint != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            powerpoint.Quit();
&lt;br /&gt;            powerpoint = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        GC.Collect();
&lt;br /&gt;        GC.WaitForPendingFinalizers();
&lt;br /&gt;        GC.Collect();
&lt;br /&gt;        GC.WaitForPendingFinalizers();
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Io ho provato il codice anche con documenti abbastanza grossi, con veramente degli ottimi risultati !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 2007.aspx" title="TAG: Office 2007"&gt;Office 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSTO.aspx" title="TAG: VSTO"&gt;VSTO&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCovertOffice2007DocumentsInPDF.aspx" /><issued>2007-9-10T11:23:47+01:00</issued><modified>2007-9-10T11:23:47+01:00</modified></entry><entry><title>Enterprise Library 3.0</title><id>/Blog/EnterpriseLibrary3.aspx</id><created>2007-4-6T10:44:27+01:00</created><content type="text/html" mode="escaped">E' uscita la versione 3.0 della Enterprise Library !
&lt;br /&gt;La potete trovare su CodePlex, a questo indirizzo: &lt;a href="http://www.codeplex.com/entlib" title="Enterprise Library 3.0"&gt;http://www.codeplex.com/entlib&lt;/a&gt;.
&lt;br /&gt;Per chi non la conoscesse, l'Enterprise Library è una libreria di classi preconfezionate, creata dal team di Patterns &amp; Practices di Microsoft, per aiutare lo sviluppatore nella scrittura di tutte quelle routine comuni che si devono affrontare ogni giorno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Enterprise Library.aspx" title="TAG: Enterprise Library"&gt;Enterprise Library&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Patterns.aspx" title="TAG: Patterns"&gt;Patterns&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/EnterpriseLibrary3.aspx" /><issued>2007-4-6T10:44:27+01:00</issued><modified>2007-4-6T10:44:27+01:00</modified></entry><entry><title>Abilitare SSL su Windows XP Professional</title><id>/Blog/AllowUseSSLOnWindowsXP.aspx</id><created>2007-2-26T23:28:42+01:00</created><content type="text/html" mode="escaped">Esiste il modo di poter utilizzare SSL all'interno di IIS su Windows XP per le nostre prove in locale, senza dover per forza utilizzare macchine virtuali con su Windows Server.
&lt;br /&gt;Ecco come fare:&lt;ol&gt;&lt;li&gt;Installare l'&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=56fc92ee-a71a-4c73-b628-ade629c89499&amp;displaylang=en" title="IIS 6 Resource Kit"&gt;IIS 6 Resource Kit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Apire il prompt dei comandi e spostarsi su questo percorso: &lt;span style="font-style: italic"&gt;C:\Programmi\IIS Resources\SelfSSL&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Lanciare l'eseguibile "SelfSSL"&lt;/li&gt;&lt;li&gt;Accettare l'avvio del programma, scrivendo Y&lt;/li&gt;&lt;/ol&gt;Eseguita questa serie di operazioni, potrete notare che è stato installato un certificato per il sito di default (l'unico presente in IIS 5).
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/IIS.aspx" title="TAG: IIS"&gt;IIS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AllowUseSSLOnWindowsXP.aspx" /><issued>2007-2-26T23:28:42+01:00</issued><modified>2007-2-26T23:28:42+01:00</modified></entry><entry><title>Delucidazioni sul .NET Framework 3.0</title><id>/Blog/.NET3.0_delucidazioni.aspx</id><created>2006-11-8T19:26:32+01:00</created><content type="text/html" mode="escaped">E' uscito da un paio di giorni (ancora non l'ho installato), ma gia è presente nell'aria tanta confusione... 
&lt;br /&gt;Il .NET Framework 3.0, NON ha le versioni 3.0 di C# o di ASP.NET ... ma è l'aggiunta delle classi riguardanti i 3 nuove framework sottostanti: 
&lt;br /&gt;
&lt;br /&gt;- Windows Presentation Foundation 
&lt;br /&gt;- Windows Comunication Foundation 
&lt;br /&gt;- Windows Workflow Foundation 
&lt;br /&gt;
&lt;br /&gt;... e nient'altro ! 
&lt;br /&gt;In &lt;a href="http://blogs.msdn.com/kaevans/archive/2006/06/11/626299.aspx" title="Post di Kirk Allen Evan su .NET 3.0"&gt;questo post di Kirk Allen Evan&lt;/a&gt;, è presente un'immagine che vale + di mille parole. </content><link rel="alternate" type="text/html" href="/Blog/.NET3.0_delucidazioni.aspx" /><issued>2006-11-8T19:26:32+01:00</issued><modified>2006-11-8T19:26:32+01:00</modified></entry><entry><title>Framework .NET 3.0 da oggi in RTM !!</title><id>/Blog/.NET3.0_RTM.aspx</id><created>2006-11-7T18:16:34+01:00</created><content type="text/html" mode="escaped">Oggi Microsoft ha rilasciato in versione ufficiale la versione 3.0 del .NET Framework !
&lt;br /&gt;Ecco il link per il download:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043&amp;DisplayLang=en" title="Download .NET 3.0"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043&amp;DisplayLang=en&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download !</content><link rel="alternate" type="text/html" href="/Blog/.NET3.0_RTM.aspx" /><issued>2006-11-7T18:16:34+01:00</issued><modified>2006-11-7T18:16:34+01:00</modified></entry><entry><title>Corsi su .NET 3.0</title><id>/Blog/CorsiDotNet3.aspx</id><created>2006-11-2T19:15:41+01:00</created><content type="text/html" mode="escaped">Sono disponibili su sito Microsoft Learning 3 corsi per "impratichirsi" con il .NET Framework 3. E la cosa bella è che sono completamente gratuiti (per un breve periodo però, quindi sbrigatevi !).
&lt;br /&gt;I corsi, ovviamente, versano sui tre framework introdotti nella nuova versione: Windows Comunication Foundation, Windows Workflow Foundation e Windows Presentation Foundation.
&lt;br /&gt;
&lt;br /&gt;Ecco il link:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/windowsvista/dev/default.mspx" title="Corsi .NET 3.0"&gt;http://www.microsoft.com/learning/windowsvista/dev/default.mspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/.NET Framework 3.aspx" title="TAG: .NET Framework 3"&gt;.NET Framework 3&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CorsiDotNet3.aspx" /><issued>2006-11-2T19:15:41+01:00</issued><modified>2006-11-2T19:15:41+01:00</modified></entry><entry><title>.NET Framework 3.0 in RC1</title><id>/Blog/WinFX_RC1.aspx</id><created>2006-9-3T14:20:49+01:00</created><content type="text/html" mode="escaped">Oggi il .NET Framwork 3.0 è arrivato alla Release Candidate 1.
&lt;br /&gt;Ecco i link per i download:&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&amp;displaylang=en" title=".NET Framework 3.0 RC1"&gt;.NET Framework 3.0 RC1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&amp;displaylang=en" title="SDK"&gt;SDK&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=40&amp;p=3&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&amp;u=http%3a%2f%2fwww.microsoft.com%2fdownloads%2fdetails.aspx%3fFamilyId%3d935AABF9-D1D0-4FC9-B443-877D8EA6EAB8%26displaylang%3den" title="La nuova versione di Orcas"&gt;La nuova versione di Orcas&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel="alternate" type="text/html" href="/Blog/WinFX_RC1.aspx" /><issued>2006-9-3T14:20:49+01:00</issued><modified>2006-9-3T14:20:49+01:00</modified></entry><entry><title>IIS Url Mapping</title><id>/Blog/IISUrlMapping.aspx</id><created>2006-8-18T12:24:27+01:00</created><content type="text/html" mode="escaped">In questi giorni ho iniziato lo sviluppo di un nuovo progetto, all'interno del quale, come prima cosa, ho dovuto scrivere un HttpModule che gestisca tutte le richieste a tutti i file e le directory presenti nella mia web application.
&lt;br /&gt;Di default ASP.NET gestisce tutte le richieste ad esso legate; quindi i file .aspx, .ascx ecc..
&lt;br /&gt;Il mio obbiettivo era quello invece di far gestire ad ASP.NET, e quindi al mio HttpModule, tutte le richieste.
&lt;br /&gt;Come fare ?
&lt;br /&gt;Basta aggiungere il mapping all'estensione .* (wildcard) nelle proprietà della propria web application tramite la console di IIS, selezionando il sito e la virtual directory scelta e andando su:
&lt;br /&gt;
&lt;br /&gt;Properties &gt; Home directory Tab &gt; Configuration
&lt;br /&gt;
&lt;br /&gt;e inserendo questi valori:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;executable:C:\WINDOWS\Microsoft.NET\Framework\vX.X.XXXX\aspnet_isapi.dll
&lt;br /&gt;extension : .*
&lt;br /&gt;limitto:HEAD,GET,POST
&lt;br /&gt;script engine (spuntato)
&lt;br /&gt;check the file exists (non spuntato)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;In questo modo, una volta registrato correttamente il mio HttpModule nel web.config, questo gestirà tutte le richieste pervenute alla mia applicazione, sia richieste di file che di directory.</content><link rel="alternate" type="text/html" href="/Blog/IISUrlMapping.aspx" /><issued>2006-8-18T12:24:27+01:00</issued><modified>2006-8-18T12:24:27+01:00</modified></entry><entry><title>SandCastle</title><id>/Blog/SandCastle.aspx</id><created>2006-7-31T10:55:12+01:00</created><content type="text/html" mode="escaped">NDoc, quel tool geniale per creare la documentazione dei propri progetti Visual Studio, con la versione 2005 dell'IDE si è trovato a non funzionare più. Io l'ho utilizzato per tutta la documentazione dei miei &lt;a href="http://www.peppedotnet.it/Projects" title="Projects"&gt;progetti&lt;/a&gt; e lo rimpiango veramente.
&lt;br /&gt;Ora, Microsoft, sta sviluppando un nuovo tool per sopprimere questa mancanza, totalmente compatibile con il .NET Framework 2. Il nome scelto è SandCastle. La CTP è disponibile &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e82ea71d-da89-42ee-a715-696e3a4873b2&amp;displaylang=en" title="SandCastle CTP"&gt;qui&lt;/a&gt;.
&lt;br /&gt;E' ancora un tantino macchinoso, perchè le operazioni sono ancora tutte a linea di comando, ma presto arriverà anche una GUI vera e propria.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SandCastle.aspx" title="TAG: SandCastle"&gt;SandCastle&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Microsoft.aspx" title="TAG: Microsoft"&gt;Microsoft&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SandCastle.aspx" /><issued>2006-7-31T10:55:12+01:00</issued><modified>2006-7-31T10:55:12+01:00</modified></entry><entry><title>.NET Framework 3.0</title><id>/Blog/dotNet3.aspx</id><created>2006-6-12T19:40:20+01:00</created><content type="text/html" mode="escaped">Squilli di trombe ...
&lt;br /&gt;La nuova versione del .NET Framework, che uscirà insieme a Windows Vista, che ora è alla beta 2 e che aveva come codename "WinFX" ... è stata rinominata in ".NET Framework 3.0" !!
&lt;br /&gt;La notizia è stata seguita dalla pubblicazione del sito (&lt;a href="http://www.netfx3.com" title=".NET 3"&gt;http://www.netfx3.com/&lt;/a&gt;) dedicato appunto ai prodotti che girano intorno a questa nuova tecnologia Microsoft.
&lt;br /&gt;Abbiamo a dispozione quindi, siti separati per:&lt;ul&gt;&lt;li&gt;&lt;a href="http://wcf.netfx3.com/" title="Windows Comunication Foundation"&gt;Windows Comunication Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wpf.netfx3.com/" title="Windows Presentation Foundation"&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wf.netfx3.com/" title="Windows Workflow Foundation"&gt;Windows Workflow Foundation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wcs.netfx3.com/" title="Windows CardSpace"&gt;Windows CardSpace&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Come detto, sono tutti in beta 2. E mi sembra di aver capito che usciranno a settembre !</content><link rel="alternate" type="text/html" href="/Blog/dotNet3.aspx" /><issued>2006-6-12T19:40:20+01:00</issued><modified>2006-6-12T19:40:20+01:00</modified></entry><entry><title>Il pattern Singleton thread-safe</title><id>/Blog/SingletonThreadSafe.aspx</id><created>2006-6-4T18:57:26+01:00</created><content type="text/html" mode="escaped">Dopo &lt;a href="http://www.peppedotnet.it/Blog/PatternSingleton.aspx" title="Il pattern Singleton"&gt;aver discusso&lt;/a&gt; sulle modalità di sviluppo del pattern Singleton, vediamo oggi come modificarne l'implementazione standard, in modo tale che diventi thread-safe, cioè che funzioni anche in un ambiente multithread.
&lt;br /&gt;Per raggiungere questo obbiettivo dobbiamo semplicemente istanziare un nuovo oggetto di tipo object, ed effettuarne un lock; questo per far si che la classe "Singleton" sia istanziata una sola volta, anche se viene richiamata da thread diversi.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; Singleton
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; Singleton instance = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000FF"&gt;object&lt;/span&gt; obj = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; &lt;span style="color: #0000FF"&gt;object&lt;/span&gt;();
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; Singleton() {}
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; Singleton getInstance()
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(instance == &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;lock&lt;/span&gt;(obj)
&lt;br /&gt;            {
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(instance == &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;                    instance = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Singleton();
&lt;br /&gt;            }
&lt;br /&gt;        }
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; instance;
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;</content><link rel="alternate" type="text/html" href="/Blog/SingletonThreadSafe.aspx" /><issued>2006-6-4T18:57:26+01:00</issued><modified>2006-6-4T18:57:26+01:00</modified></entry><entry><title>Il pattern Singleton</title><id>/Blog/PatternSingleton.aspx</id><created>2006-5-7T18:1:13+01:00</created><content type="text/html" mode="escaped">Oggi, mi è capitato di utilizzare il pattern Singleton, per un mio progetto.
&lt;br /&gt;Quello che permette di fare questo design pattern è limitare la creazione di una nuova istanza di un oggetto ad una singola volta.
&lt;br /&gt;Ecco come questo pattern può essere implementato ed utilizzato in C#:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; Singleton
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; Singleton instance = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; Singleton() {}
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; Singleton getInstance()
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(instance == &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;            instance = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Singleton();
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; instance;
&lt;br /&gt;    }
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; Main
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; Main()
&lt;br /&gt;    {
&lt;br /&gt;        Singleton s1 = Singleton.getInstance();
&lt;br /&gt;        Singleton s2 = Singleton.getInstance();
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(s1 == s2)
&lt;br /&gt;            Console.Writeline(&lt;span style="color: #848284"&gt;"Stessa istanza"&lt;/span&gt;);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;</content><link rel="alternate" type="text/html" href="/Blog/PatternSingleton.aspx" /><issued>2006-5-7T18:1:13+01:00</issued><modified>2006-5-7T18:1:13+01:00</modified></entry><entry><title>C# e VB.NET FAQ</title><id>/Blog/CsharpVbFAQ.aspx</id><created>2005-10-30T11:47:5+01:00</created><content type="text/html" mode="escaped">Il team Microsoft di C# e quello di VB.NET hanno (da tempo) due blog che aggiornano con le FAQ sui rispettivi linguaggi. Davvero utile e decisamente lodevole !
&lt;br /&gt;Ora che è uscita la versione 2.0 del framework, speriamo che facciano la stessa cosa per C# 2.0 e VB.NET 2005.
&lt;br /&gt;Ecco, comunque, i link:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C# FAQ&lt;/b&gt;
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/csharpfaq/" title="C# FAQ"&gt;http://blogs.msdn.com/csharpfaq/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;VB.NET FAQ&lt;/b&gt;
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/vbfaq/" title="VB.NET FAQ"&gt;http://blogs.msdn.com/vbfaq/&lt;/a&gt;</content><link rel="alternate" type="text/html" href="/Blog/CsharpVbFAQ.aspx" /><issued>2005-10-30T11:47:5+01:00</issued><modified>2005-10-30T11:47:5+01:00</modified></entry><entry><title>Aggiunta di constraint ad un DataSet</title><id>/Blog/AddConstraintToDataSet.aspx</id><created>2005-10-9T18:44:4+01:00</created><content type="text/html" mode="escaped">Nel &lt;a href="http://www.peppedotnet.it/Blog/CreateDataSetFromXmlSchema.aspx" title="Creazione di un DataSet tipizzato, a partire da un XML Schema"&gt;precedente post&lt;/a&gt;, abbiamo visto come creare un nuovo oggetto di tipo DataSet attraverso la definizione di un XML Schema. Oggi vediamo come aggiungere dei constraint alle tabelle presenti nel DataSet.
&lt;br /&gt;Il primo constraint che possiamo aggiungere è uno &lt;b&gt;UniqueConstraint&lt;/b&gt;, che specifica che una determinata colonna dev'essere unica; nel nostro caso, prendendo sempre spunto dalla struttura della tabella creata nel precedente post, assegnamo il constraint alla colonna ID.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;UniqueConstraint idPk = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; UniqueConstraint(&lt;span style="color: #848284"&gt;"idPk"&lt;/span&gt;, ds.Tables[0].Columns[&lt;span style="color: #848284"&gt;"ID"&lt;/span&gt;]);
&lt;br /&gt;ds.Tables[0].Constraints.Add(idPk);
&lt;br /&gt;ds.Tables[0].Columns[&lt;span style="color: #848284"&gt;"ID"&lt;/span&gt;].Unique = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;ds.Tables[0].Columns[&lt;span style="color: #848284"&gt;"ID"&lt;/span&gt;].AllowDBNull = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Abbiamo cosi' specificato che la colonna ID dev'essere unica e che non può essere nulla (proprietà AllowDBNull). Se infatti proviamo ad aggiungere due record con lo stesso valore per la colonna ID, verrà sollevata un'eccezione di tipo System.Data.ConstraintException, mentre se proviamo ad inserire una riga senza assegnare nessun valore alla colonna in questione, verrà sollevato un'eccezione di tipo System.Data.NoNullAllowedException.
&lt;br /&gt;
&lt;br /&gt;Per inserire invece un constraint di &lt;b&gt;chiave primaria&lt;/b&gt;, dobbiamo settare il valore della proprietà PrimaryKey, della classe DataTable, passandogli la colonna, o le colonne, che vogliamo come chiave primaria della taballa.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;ds.Tables[0].PrimaryKey = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; DataColumn[]{ds.Tables[0].Columns[&lt;span style="color: #848284"&gt;"ID"&lt;/span&gt;]};&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo tipo di constraint può essere settato anche dallo schema XML inserendo un elemento "key" all'interno dell'elemento che rappresenta il DataSet:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:key&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="myDataKey1"&lt;/span&gt; msdata:PrimaryKey&lt;span style='color:#0000FF'&gt;="true"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;     &lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:selector&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xpath&lt;span style='color:#0000FF'&gt;=".//Clienti"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;     &lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xpath&lt;span style='color:#0000FF'&gt;="ID"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:key&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Un altro tipo di constraint molto utile è l'&lt;b&gt;AutoIncrement&lt;/b&gt;, che specifica l'incremento automatico di una colonna di tipo int. Per creare una colonna con questo tipo di constraint, bisogna settare a true la proprietà autoincrement della classe DataColumn, decidere il valore di incremento e il valore iniziale da cui far partire l'incremento.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DataColumn incrementColumn = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; DataColumn(&lt;span style="color: #848284"&gt;"Increment"&lt;/span&gt;);
&lt;br /&gt;incrementColumn.DataType = System.Type.GetType(&lt;span style="color: #848284"&gt;"System.Int32"&lt;/span&gt;);
&lt;br /&gt;incrementColumn.ReadOnly = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;incrementColumn.AutoIncrement = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;incrementColumn.AutoIncrementSeed = 0;
&lt;br /&gt;incrementColumn.AutoIncrementStep = 1;
&lt;br /&gt;ds.Tables[0].Columns.Add(incrementColumn);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;L'ultimo tipo di constraint è invece il vincolo di &lt;b&gt;chiave esterna&lt;/b&gt;. Questo vincolo viene utilizzato per collegare tra loro varie tabelle attraverso i rispettivi valori di chiave primaria e chiave esterna. Risulta inoltre molto utile durante le operazioni di aggiornamento e cancellazione di record in quanto è possibile specificare se applicare le modifiche fatte su un record a cascata (cascade) nei record collegati, se non applicargli alcuna modifica (none), se settare i dati collegati a null (setNull) o se settargli un valore di default (setDefault).
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;ForeignKeyConstraint fk = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ForeignKeyConstraint(&lt;span style="color: #848284"&gt;"fk"&lt;/span&gt;,
&lt;br /&gt;                              ds.Tables[0].Columns[&lt;span style="color: #848284"&gt;"PK"&lt;/span&gt;], ds.Tables[1].Columns[&lt;span style="color: #848284"&gt;"FK"&lt;/span&gt;]);
&lt;br /&gt;fk.DeleteRule = Rule.Cascade;
&lt;br /&gt;fk.UpdateRule = Rule.SetNull;
&lt;br /&gt;ds.Tables[0].Constraints.Add(fk);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una proprietà molto importante della classe ForeignKeyConstraint è la proprietà AcceptRejectRule che consente di specificare il comportamento delle righe figlie al modificarsi delle proprietà AcceptChanges o RejectChanges della riga padre; anche in questo caso le opzioni sono o cascade o none.
&lt;br /&gt;
&lt;br /&gt;Sia chiaro però, che tutte queste proprietà e operazioni che possiamo effettuare su di un oggetto di tipo DataSet, per customizzarlo a nostro piacimento, le possiamo prendere in automatico da query su eventuali basi di dati, specificando nella chiamata del metodo Fill della classe OleDbDataAdapter (o SqlDataAdapter) che il tipo di schema da applicare al DataSet dev'essere mappato dal database (SchemaType.Mapped).</content><link rel="alternate" type="text/html" href="/Blog/AddConstraintToDataSet.aspx" /><issued>2005-10-9T18:44:4+01:00</issued><modified>2005-10-9T18:44:4+01:00</modified></entry><entry><title>Creazione di un DataSet tipizzato, a partire da un XML Schema</title><id>/Blog/CreateDataSetFromXmlSchema.aspx</id><created>2005-10-8T12:42:39+01:00</created><content type="text/html" mode="escaped">La prossima settimana dovrei laurearmi. L'oggetto della mia tesi è stato la creazione di un interfaccia grafica (una WinForm per intenderci :) per la visualizzazione di schemi e documenti XML. Mi sono quindi studiato tutto ciò che lega .NET con l'XML e l'XML Schema.
&lt;br /&gt;La mia attenzione però si è focalizzata sulla parte relativa agli schemi.
&lt;br /&gt;Un utilizzo ottimo di questi è legato alla classe DataSet, che espone un metodo (ReadXmlSchema) che permette di crearne la struttura a partire da uno schema XML.
&lt;br /&gt;Ecco un esempio d'uso, la creazione della struttura di un DataSet per la rappresentazione di un elenco di clienti.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:schema&lt;/span&gt;&lt;span style='color:#FF0000'&gt; id&lt;span style='color:#0000FF'&gt;="ClientiDataSet"&lt;/span&gt;
&lt;br /&gt;            xmlns:xsd&lt;span style='color:#0000FF'&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;
&lt;br /&gt;            xmlns:msdata&lt;span style='color:#0000FF'&gt;="urn:schemas-microsoft-com:xml-msdata"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="myData"&lt;/span&gt; msdata:IsDataSet&lt;span style='color:#0000FF'&gt;="true"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;	&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:complexType&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;	&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:choice&lt;/span&gt;&lt;span style='color:#FF0000'&gt; maxOccurs&lt;span style='color:#0000FF'&gt;="unbounded"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;		&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Clienti"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;		&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:complexType&lt;/span&gt;&lt;span style='color:#FF0000'&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;			&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:sequence&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;				&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="ID"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="xsd:integer"&lt;/span&gt; minOccurs&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;				&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Nome"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="xsd:string"&lt;/span&gt; minOccurs&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;				&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Cognome"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="xsd:string"&lt;/span&gt; minOccurs&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;			&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:sequence&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;		&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:complexType&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;		&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;	&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:choice&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;	&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:complexType&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:element&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsd:schema&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo schema definisce una tabella del tipo:
&lt;br /&gt;
&lt;br /&gt;Clienti (ID, Nome, Cognome)
&lt;br /&gt;
&lt;br /&gt;tabella, che andrà poi a rappresentare la struttura del nostro DataSet.
&lt;br /&gt;Ora basta solamente creare un nuovo oggetto di tipo DataSet e chiamare il metodo ReadXmlSchema, passandogli come parametri il path del nostro schema.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DataSet ds = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; DataSet();
&lt;br /&gt;ds.ReadXmlSchema(&lt;span style="color: #848284"&gt;"Clienti.xsd"&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Per visualizzare la struttura dell'oggetto appena creato, vi rimando al metodo &lt;a href="http://www.peppedotnet.it/Blog/DisplayDataSetStructure.aspx" title="DisplayDataSetStructure"&gt;DisplayDataSetStructure&lt;/a&gt;, metodo che nel nostro caso, stamperà a video questo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DataSet structure
&lt;br /&gt;	Table name: Clienti
&lt;br /&gt;		Column name: ID (System.Int64)
&lt;br /&gt;		Column name: Nome (System.String)
&lt;br /&gt;		Column name: Cognome (System.String)
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se vogliamo invece popolare il nostro DataSet, non dobbiamo far altro che creare un nuovo oggetto di tipo DataRow e assegnare i valori scelti ai suoi vari indexers; indexers che sono definiti dal nome della colonna da popolare.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DataRow newRow = ds.Tables[0].NewRow();
&lt;br /&gt;newRow[&lt;span style="color: #848284"&gt;"ID"&lt;/span&gt;] = 1;
&lt;br /&gt;newRow[&lt;span style="color: #848284"&gt;"Nome"&lt;/span&gt;] = &lt;span style="color: #848284"&gt;"Giuseppe"&lt;/span&gt;;
&lt;br /&gt;newRow[&lt;span style="color: #848284"&gt;"Cognome"&lt;/span&gt;] = &lt;span style="color: #848284"&gt;"Marchi"&lt;/span&gt;;
&lt;br /&gt;ds.Tables[0].Rows.Add(newRow);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questa tecnica ci permette di applicare un alto livello di tipizzazione e customizzazione agli oggetti di tipo DataSet dei nostri progetti, utili alla creazione di strutture di dati solide e completamente "user-defined".</content><link rel="alternate" type="text/html" href="/Blog/CreateDataSetFromXmlSchema.aspx" /><issued>2005-10-8T12:42:39+01:00</issued><modified>2005-10-8T12:42:39+01:00</modified></entry><entry><title>DateTime formatting, ulteriori considerazioni</title><id>/Blog/DateTimeFormatting.aspx</id><created>2005-9-18T17:36:43+01:00</created><content type="text/html" mode="escaped">Oggi ho pubblicato un &lt;a href="http://www.peppedotnet.it/Articoli/DateFormatting.aspx" title="Date formatting in C#"&gt;nuovo articoletto&lt;/a&gt; sui possibili modi di formattare una data in stringa. L'esempio presuppone che la lingua del thread corrente sia l'italiano, ma se non lo fosse ? E noi volessimo comunque le nostre date in italiano ?
&lt;br /&gt;Ecco come possiamo fare:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;IFormatProvider provider = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CultureInfo(&lt;span style="color: #848284"&gt;"it-IT"&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt;[] array = DateTime.Now.GetDateTimeFormats('d', provider);			
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; data = "";
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;for&lt;/span&gt; (&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; i=0; i&lt;array.Length; i++)
&lt;br /&gt;{
&lt;br /&gt;	data += array[i];
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come si può vedere, viene creato un nuovo oggetto di tipo IFormatProvider, che viene passato al metodo GetDateTimeFormats del tipo di dato DateTime; a questo metodo viene passato anche il pattern per esprimere il tipo di formattazione desiderato. L'elenco dei pattern è sempre &lt;a href="http://www.peppedotnet.it/Articoli/DateFormatting.aspx" title="Date formatting in C#"&gt;lo stesso&lt;/a&gt; inserito nell'articolo.
&lt;br /&gt;
&lt;br /&gt;Chiaramete è lecito fare il processo inverso. Cioè passare da una stringa, contenente una data valida pre formattata, ad un oggetto di tipo DateTime. Come ? Attraverso l'uso del metodo Parse.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;IFormatProvider provider = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CultureInfo(&lt;span style="color: #848284"&gt;"it-IT"&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;);
&lt;br /&gt;DateTime time = DateTime.Parse(&lt;span style="color: #848284"&gt;"18/09/2005"&lt;/span&gt;, provider, DateTimeStyles.NoCurrentDateDefault);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Avevo gia usato queste tecniche all'interno della libreria dotRSS, sia per la lettura che per la scrittura di date secondo il formato definito dalle specifiche RFC1123, che è il formato richiesto dalle specifiche rss 2.0; ora ho inserito il codice all'interno della mia library, sotto il namespace Peppe.Utils.
&lt;br /&gt;Sta prendendo veramente corpo quella libreria ... e intanto oggi la mia Juve si riconferma più capolista che mai !</content><link rel="alternate" type="text/html" href="/Blog/DateTimeFormatting.aspx" /><issued>2005-9-18T17:36:43+01:00</issued><modified>2005-9-18T17:36:43+01:00</modified></entry><entry><title>101 esempi per ASP.NET 2.0</title><id>/Blog/101_esempi_aspdotnet2.aspx</id><created>2005-8-20T10:38:46+01:00</created><content type="text/html" mode="escaped">Se non avete ancora avuto la possibilità o trovato il modo di leggervi qualcosa o testare le funzionalità del .NET Framework 2.0 e di Visual Studio .NET 2005, &lt;a href="http://lab.msdn.microsoft.com/vs2005/downloads/101samples/default.aspx" title="101 esempi su ASP.NET 2.0"&gt;scaricatevi questi 101 esempi&lt;/a&gt; sull'argomento.
&lt;br /&gt;Gli esempi sono divisi in queste quattro categorie:&lt;ul&gt;&lt;li&gt;Base class libraries&lt;/li&gt;&lt;li&gt;Data access&lt;/li&gt;&lt;li&gt;Web development&lt;/li&gt;&lt;li&gt;Windows forms&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Link:&lt;/b&gt; &lt;a href="http://lab.msdn.microsoft.com/vs2005/downloads/101samples/default.aspx" title="101 esempi per ASP.NET 2.0"&gt;http://lab.msdn.microsoft.com/vs2005/downloads/101samples/default.aspx&lt;/a&gt;</content><link rel="alternate" type="text/html" href="/Blog/101_esempi_aspdotnet2.aspx" /><issued>2005-8-20T10:38:46+01:00</issued><modified>2005-8-20T10:38:46+01:00</modified></entry><entry><title>Selezionare un nodo di un Treeview dal suo nome</title><id>/Blog/Selezionare_nodo_Treeview_dal_nome.aspx</id><created>2005-7-12T14:18:40+01:00</created><content type="text/html" mode="escaped">Ecco un metodo ricorsivo molto comodo per ritornare un singolo nodo di un &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsTreeViewClassTopic.asp" title="Treeview @ MSDN"&gt;Treeview&lt;/a&gt;, dato il suo nome.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; TreeNode getNodeByVal(TreeNodeCollection nodes, &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; text)
&lt;br /&gt;{
&lt;br /&gt;     TreeNode node = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; TreeNode();
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;for&lt;/span&gt;(&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; i=0; i&lt;nodes.Count; i++)
&lt;br /&gt;     {
&lt;br /&gt;          &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(nodes[i].Text.Equals(text))
&lt;br /&gt;          {
&lt;br /&gt;               node = nodes[i];
&lt;br /&gt;               &lt;span style="color: #0000FF"&gt;break&lt;/span&gt;;
&lt;br /&gt;          }
&lt;br /&gt;          getNodeByVal(nodes[i].Nodes, text);
&lt;br /&gt;     }
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; node;
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;Public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Function&lt;/span&gt; getNodeByVal(&lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; nodes &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; TreeNodeCollection, &lt;span style="color: #0000FF"&gt;ByVal&lt;/span&gt; text &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;String&lt;/span&gt;) &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; TreeNode
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; node &lt;span style="color: #0000FF"&gt;As New&lt;/span&gt; TreeNode()
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;For&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; i &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Integer&lt;/span&gt; = 0 &lt;span style="color: #0000FF"&gt;To&lt;/span&gt; nodes.Count &lt;span style="color: #0000FF"&gt;Step&lt;/span&gt; 1
&lt;br /&gt;          &lt;span style="color: #0000FF"&gt;If&lt;/span&gt; nodes(i).Text.Equals(text) &lt;span style="color: #0000FF"&gt;Then&lt;/span&gt;
&lt;br /&gt;               node = nodes(i)
&lt;br /&gt;               &lt;span style="color: #0000FF"&gt;Exit For&lt;/span&gt;
&lt;br /&gt;          &lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;If&lt;/span&gt;
&lt;br /&gt;          getNodeByVal(nodes(i).Nodes, text)
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Next&lt;/span&gt;
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Return&lt;/span&gt; node
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Function&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Allo stesso modo, quindi ricorsivamente, un Treeview può essere letto in tutta la sua interezza, permettendoci di arrivare a tutte le proprietà di tutti i nodi dell'albero.</content><link rel="alternate" type="text/html" href="/Blog/Selezionare_nodo_Treeview_dal_nome.aspx" /><issued>2005-7-12T14:18:40+01:00</issued><modified>2005-7-12T14:18:40+01:00</modified></entry><entry><title>Libro grauito:&quot;Introducing Visual Basic 2005 for Developers&quot;</title><id>/Blog/Libro_gratuito.aspx</id><created>2005-6-24T16:28:18+01:00</created><content type="text/html" mode="escaped">Oggi, fra le news di &lt;a href="http://msdn.microsoft.com" title="msdn"&gt;msdn&lt;/a&gt; c'era l'avviso della pubblicazione da parte di Microsoft, di un libro dedicato agli sviluppatori VB.NET completamente gratuito. Un ottima iniziativa e sicuramente un ottima occasione ...
&lt;br /&gt;Io mi sono gia scaricato tutti i capitoli, e spero di spulcarne un pò il più presto possibile !
&lt;br /&gt;
&lt;br /&gt;Link: &lt;a href="http://msdn.microsoft.com/vbasic/whidbey/introto2005/" title="Introducing Visual Basic 2005 for Developers"&gt;http://msdn.microsoft.com/vbasic/whidbey/introto2005/&lt;/a&gt;</content><link rel="alternate" type="text/html" href="/Blog/Libro_gratuito.aspx" /><issued>2005-6-24T16:28:18+01:00</issued><modified>2005-6-24T16:28:18+01:00</modified></entry><entry><title>Un occhiata alle nuove features di Visual C# 2005 Express Edition</title><id>/Blog/Occhiata_features_visual_studio_2005.aspx</id><created>2005-6-19T15:40:7+01:00</created><content type="text/html" mode="escaped">Da un paio di settimane sto giocando con &lt;a href="http://lab.msdn.microsoft.com/express/vcsharp/" title="Visual C# 2005 Express Edition"&gt;Visual C# 2005 Express Edition&lt;/a&gt;, che mi sono scaricato ed installato come non poca fatica.
&lt;br /&gt;Devo dire che le &lt;a href="http://msdn.microsoft.com/vcsharp/2005/overview/productivity/" title="novità introdotte"&gt;novità introdotte&lt;/a&gt; sono tante e molto utili.
&lt;br /&gt;Diamogli un pò un occhiata:&lt;ul&gt;&lt;li&gt;&lt;b&gt;Change Tracking:&lt;/b&gt; evidenzia la differenza tra codice salvato e codice non ancora salvato.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Class Designer:&lt;/b&gt; tool visuale per dare all'utente la possibilità di maneggiare proprietà e metodi delle classi e dei tipi del progetto. E possibile anche vedere in modo visuale l'eredità tra classi ed effettuarne il refactoring.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Expansions:&lt;/b&gt; pezzi di codice sorgente spesso utilizzati, che possono essere inseriti in più parti del progetto, ciccando col destro e selezionando Refactor &gt; Insert Expansion.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Surrounds With:&lt;/b&gt; è la possibilità di "circondare" le linee di codice di una Expansion con altri statemant (tipo: try ... catch ... finally)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Object Test Bench:&lt;/b&gt; Da all'utente la possibilità di eseguire dei test sui singoli oggetti.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Refactoring:&lt;/b&gt; il motore di refactoring abilita lo sviluppatore a ristrutturare il suo codice. Il Refactoring è la tecnica usata per ristrutturate un blocco di codice sorgente, alterare la sua struttura interna senza cambiare il suo comportamente "esterno". &lt;a href="http://www.refactoring.com/" title="refactoring.com"&gt;http://www.refactoring.com&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Other Intellisense Enhancements:&lt;/b&gt; l'intellisense è stato rivisto per comprendere anche i generic types, le classi per le eccezioni e quelle per gli attributi di classi o metodi.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fonts and Colors:&lt;/b&gt; è possibile modificare l'apparenza del gran numero di oggetti visualizzabili in Visual Studio, in modo tale da personalizzarla.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Profiles:&lt;/b&gt; come Windows, anche Visual Studio da la possibilità di esportare e di importare le configurazioni di ogni singolo utente.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Open Files Menu:&lt;/b&gt; nuovo menu aggiunto in alto a sinistra, che visualizza tutti i files aperti.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Find all references:&lt;/b&gt; è possibile ciccare col destro su di una classe o di una variabile e trovare tutte le righe di codice che la referenziano.&lt;/li&gt;&lt;li&gt;&lt;b&gt;"Using" Region&lt;/b&gt;: tutte le direttive using per utilizzare altri namespace nelle proprie classi, sono state inserite in una regione di codice; regione che si automantiene all'inserimento di nuovi namespace.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clean Solution:&lt;/b&gt; la possibilità di pulire la propria Solution, in modo tale da eliminare tutti i files intermedi e files di output.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Find Searches Hidden Text by Default:&lt;/b&gt; il Find and Replace viene ora effettuato anche sulle regioni che sono attualmente collassate (non visibili). Nelle versioni precendenti veniva effettuato solamente nelle region aperte.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Autorecover in the IDE:&lt;/b&gt; per preservare i propri progetti, visual studio, ora, ha implementato il meccanismo di auto save, che è configurabile dal pannello di Opzioni &gt; AutoRecover&lt;/li&gt;&lt;li&gt;&lt;b&gt;Control Alignment:&lt;/b&gt; aiuto sensibile nell'allineare i vari controls all'interno di una win form&lt;/li&gt;&lt;li&gt;&lt;b&gt;Smart Tags for Controls:&lt;/b&gt; sono dei menu contestuali che permettono la modifica di proprietà di un singolo control di una win form o anche di una web form.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Quicker Web Project:&lt;/b&gt; ora, non cè più bisogno di aver iis installato per creare un progetto web, basta selezionare il tipo di progetto "Web Project" e lIDE creerà tutti i files che potranno essere debuggati ed eseguiti in locale.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tools Support for Strong Naming Assemblies:&lt;/b&gt; la form delle proprietà di un progetto è stata completamente ridisegnata, e contiene questo nuovo tool per creare in modo visuale gli Strong Name Assembly.&lt;/li&gt;&lt;li&gt;&lt;b&gt;ClickOnce Deployment:&lt;/b&gt; meccanismo che permette allo sviluppatore di effettuare il deploy di windows application da un web server.&lt;/li&gt;&lt;/ul&gt; Appena trovo un pò di tempo, vedrò di mettere anche qualche screenshots.
&lt;br /&gt;</content><link rel="alternate" type="text/html" href="/Blog/Occhiata_features_visual_studio_2005.aspx" /><issued>2005-6-19T15:40:7+01:00</issued><modified>2005-6-19T15:40:7+01:00</modified></entry><entry><title>[Rettifica] Autenticazione su Server Proxy con .NET</title><id>/Blog/Rettifica_autenticazione_server_proxy.aspx</id><created>2005-6-9T16:35:34+01:00</created><content type="text/html" mode="escaped">Per chiamare un WebService basta solamente assegnarli delle credenziali di default e settare a true la proprietà PreAuthenticate.
&lt;br /&gt;Riecco il codice.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;&lt;div class="code"&gt;&lt;pre&gt;WebReference1.ServiceName service = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; WebReference1.ServiceName();
&lt;br /&gt;service.Credentials = System.Net.CredentialCache.DefaultCredentials;
&lt;br /&gt;service.PreAuthenticate = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; service &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; WebReference1.ServiceName()
&lt;br /&gt;service.Credentials = System.Net.CredentialCache.DefaultCredentials
&lt;br /&gt;service.PreAuthenticate = &lt;span style="color: #0000FF"&gt;True&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Mentre per effettuare una richiesta http, quindi per uscire dalla intranet, il codice del &lt;a href="http://www.peppedotnet.it/post31.aspx" title="Precedente post"&gt;precedente post&lt;/a&gt; va più che bene !</content><link rel="alternate" type="text/html" href="/Blog/Rettifica_autenticazione_server_proxy.aspx" /><issued>2005-6-9T16:35:34+01:00</issued><modified>2005-6-9T16:35:34+01:00</modified></entry><entry><title>Autenticazione su Server Proxy con .NET</title><id>/Blog/Autenticazione_server_proxy.aspx</id><created>2005-6-6T14:38:22+01:00</created><content type="text/html" mode="escaped">Se state lavorando in una macchina collegata ad una rete con un bel proxy server, e volete provare, chessò, a cercare di chiamare un web service, oppure semplicemente a caricare un file Xml remoto, con il metodo Load della classe XmlDocument (quindi una qualsiasi richiasta Http), vedrete apparirvi questo errore:
&lt;br /&gt;
&lt;br /&gt;Error 407 - Proxy Authentication Required
&lt;br /&gt;
&lt;br /&gt;La cosa più bella è che c'ha ragione lui, perchè prima di fare una qualunque richiesta http che cerca di uscire dalla vostra intranet, dovete auteticarvi presso il server proxy.
&lt;br /&gt;Eccome come farlo via codice:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;C#&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; Stream getStream()
&lt;br /&gt;{
&lt;br /&gt;     WebResponse response;
&lt;br /&gt;     WebProxy proxy = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; WebProxy(&lt;span style="color: #848284"&gt;"http://serverProxy:porta"&lt;/span&gt;);
&lt;br /&gt;     WebRequest request = HttpWebRequest.Create(&lt;span style="color: #848284"&gt;"http://www.peppedotnet.it"&lt;/span&gt;);
&lt;br /&gt;     NetworkCredential myCred = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; NetworkCredential(&lt;span style="color: #848284"&gt;"username"&lt;/span&gt;, &lt;span style="color: #848284"&gt;"password"&lt;/span&gt;, &lt;span style="color: #848284"&gt;"dominio"&lt;/span&gt;);
&lt;br /&gt;     proxy.Credentials = myCred;
&lt;br /&gt;     request.Proxy = proxy;
&lt;br /&gt;     response = request.GetResponse();
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; response.GetResponseStream();
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;VB.NET&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;Public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Function&lt;/span&gt; getStream() &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; Stream
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;     Dim&lt;/span&gt; response &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; WebResponse
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; proxy &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; WebProxy(&lt;span style="color: #848284"&gt;"http://serverProxy:porta"&lt;/span&gt;)
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; request &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; WebRequest = HttpWebRequest.Create(&lt;span style="color: #848284"&gt;"http://www.peppedotnet.it"&lt;/span&gt;)
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Dim&lt;/span&gt; myCred &lt;span style="color: #0000FF"&gt;As&lt;/span&gt; NetworkCredential = &lt;span style="color: #0000FF"&gt;New&lt;/span&gt; NetworkCredential(&lt;span style="color: #848284"&gt;"username"&lt;/span&gt;, &lt;span style="color: #848284"&gt;"password"&lt;/span&gt;, &lt;span style="color: #848284"&gt;"dominio"&lt;/span&gt;)
&lt;br /&gt;     proxy.Credentials = myCred
&lt;br /&gt;     request.Proxy = proxy
&lt;br /&gt;     response = request.GetResponse()
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;Return&lt;/span&gt; response.GetResponseStream()
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;End&lt;/span&gt; &lt;span style="color: #0000FF"&gt;Function&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;</content><link rel="alternate" type="text/html" href="/Blog/Autenticazione_server_proxy.aspx" /><issued>2005-6-6T14:38:22+01:00</issued><modified>2005-6-6T14:38:22+01:00</modified></entry><entry><title>Web Service's url behavior</title><id>/Blog/Web_Service_url_behavior.aspx</id><created>2005-5-29T18:27:40+01:00</created><content type="text/html" mode="escaped">Quando andate ad aggiungere al vostro progetto visual studio, un riferimento ad un web service, potete decidere di farlo in modo dinamico o statico. Cioè potete o esplicitare subito l'url del servizio web oppure scegliere l'opzione "Dynamic", che vi permette di passare l'indirizzo del web service dal web.config ... in modo tale da poterlo cambiare con facilità.
&lt;br /&gt;Per far ciò non basta far altro che scegliere l'opzione Dynamic, al posto di Static, nel campo Url Behavior presente nelle proprietà della web reference, e settare una chiave nel vostro web.config, con l'url del web service. Questa chiave viene settata in automatico da Visual Studio .NET e viene scritta nel file di configurazione del progetto.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;appSettings&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;      &lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;add&lt;/span&gt;&lt;span style='color:#FF0000'&gt; key&lt;span style='color:#0000FF'&gt;="AssemblyName.localhost.WebServiceName"&lt;/span&gt;
&lt;br /&gt;           value&lt;span style='color:#0000FF'&gt;="http://localhost/WebService.asmx"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;appSettings&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Questa operazione non fa altro che cambiare il codice del file Reference.cs (o Reference.vb), che da :
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; WebServiceName()
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.Url = &lt;span style="color: #848284"&gt;"http://localhost/WebService.asmx"&lt;/span&gt;;
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;diventa:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;public&lt;/span&gt; WebServiceName()
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; urlSettings = ConfigurationSettings.AppSettings(&lt;span style="color: #848284"&gt;"AssemblyName.localhost.WebServiceName"&lt;/span&gt;);
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(urlSettings != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;          &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.Url = &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Concat(urlSettings, &lt;span style="color: #848284"&gt;""&lt;/span&gt;);
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;else&lt;/span&gt;
&lt;br /&gt;          &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.Url = &lt;span style="color: #848284"&gt;""&lt;/span&gt;;
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;</content><link rel="alternate" type="text/html" href="/Blog/Web_Service_url_behavior.aspx" /><issued>2005-5-29T18:27:40+01:00</issued><modified>2005-5-29T18:27:40+01:00</modified></entry></feed>