<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnetcampania.org/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it"><title type="html">Turibbio&amp;#39;s Blog</title><subtitle type="html" /><id>http://dotnetcampania.org/blogs/turibbio/atom.aspx</id><link rel="alternate" type="text/html" href="http://dotnetcampania.org/blogs/turibbio/default.aspx" /><link rel="self" type="application/atom+xml" href="http://dotnetcampania.org/blogs/turibbio/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.40407.4157">Community Server</generator><updated>2010-12-13T19:25:00Z</updated><entry><title>Modifiche alla UI di VS2011 RC</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2012/05/19/modifiche-alla-ui-di-vs2011-rc.aspx" /><id>/blogs/turibbio/archive/2012/05/19/modifiche-alla-ui-di-vs2011-rc.aspx</id><published>2012-05-19T14:33:00Z</published><updated>2012-05-19T14:33:00Z</updated><content type="html">&lt;p&gt;Nel link seguente potete avere una prima overview delle modifiche alla user interface di VS2011 RC.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx" href="http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx"&gt;http://blogs.msdn.com/b/visualstudio/archive/2012/05/08/visual-studio-11-user-interface-updates-coming-in-rc.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1879" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="vs2011" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/vs2011/default.aspx" /></entry><entry><title>Turitip #34: Abilitare l’iberanzione/sospensione su Windows Server 8 Beta</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2012/04/19/turitip-34-abilitare-l-iberanzione-sospensione-su-windows-server-8-beta.aspx" /><id>/blogs/turibbio/archive/2012/04/19/turitip-34-abilitare-l-iberanzione-sospensione-su-windows-server-8-beta.aspx</id><published>2012-04-19T16:25:00Z</published><updated>2012-04-19T16:25:00Z</updated><content type="html">&lt;p&gt;Nonostante non sia una buona pratica, può capitare di dover installare sul proprio notebook, per motivi lavorativi o “ludici”, un sistema operativo server.&lt;/p&gt;  &lt;p&gt;Nel mio caso specifico, ho avuto la necessità di installare Windows Server 8 Beta sul notebook. &lt;/p&gt;  &lt;p&gt;Dopo aver usato un po’ il sistema, ho deciso di aggiungere il ruolo Hyper-V per gestire la virtualizzazione, ma la prima cosa che ho notato però, dopo aver installato il ruolo, è la disabilitazione delle opzioni di ibernazione e sospensione dal menù di &lt;em&gt;shutdown.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/6825.image_5F00_47A88F06.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;float:none;margin-left:auto;display:block;border-top-width:0px;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/5710.image_5F00_thumb_5F00_033877FA.png" width="237" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quello che succede è che nel momento in cui partono i servizi di Hyper-V vengono automaticamente disabilitate le funzionalità di ibernazione o sospensione. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Di seguito, trovate le 3 diverse strade da seguire per riabilitare l’ibernazione/sopsensione su Windows Server 8&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;1. Creare una &lt;em&gt;boot entry&lt;/em&gt; con il servizio di Hyper-V non avviato&lt;/h2&gt;  &lt;p&gt;Consiste nell’usare il comando &lt;strong&gt;bcdedit &lt;/strong&gt;per aggiungere una boot entry all’avvio del sistema. In questo modo potrete avviare il sistema operativo senza che il servizio di Hyper-V sia avviato. Maggiori informazioni sulla procedura possono essere recuperate qui: &lt;a title="http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx" href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx"&gt;http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Più in generale, il comando bcdedit può essere utilizzato per creare boot entry con avvio selettivo.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;2. Avvio &lt;em&gt;on-demand &lt;/em&gt;del servizio di Hyper-V&lt;/h2&gt;  &lt;p&gt;In questa procedura (implementata direttamente sulla mia macchina) vedremo come modificare l’avvio del servizio di Hyper-V in modo da &lt;em&gt;startarlo&lt;/em&gt; solo quando ve n’è bisogno. &lt;/p&gt;  &lt;p&gt;Il primo passo da fare è modificare una chiave di registro del sistema. La chiave in questione è &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\&lt;font size="4"&gt;hvservice&lt;/font&gt;]&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;La prima cosa da notare, è una differenza tra i nomi del servizio di Hyper-V tra le versioni di Windows Server 2008R2 e Windows Server 8 beta. Mentre nel primo il servizio si chiamava &lt;strong&gt;hvboot&lt;/strong&gt;, ora è stato rinominato in &lt;strong&gt;hvservice&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Questa chiave di registro può assumere 5 diversi valori:&lt;/p&gt;  &lt;p&gt;0=Boot (not supported)&lt;/p&gt;  &lt;p&gt;1=System&lt;/p&gt;  &lt;p&gt;2=Auto&lt;/p&gt;  &lt;p&gt;3=Demand&lt;/p&gt;  &lt;p&gt;4=Disabled&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Nel nostro caso andremo a scegliere come valore 3. In questo caso ci viene data la possibilità di avviare manualmente il servizio dell’hypervisor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;E’ anche possibile, per ottenere lo stesso risultato, da command prompt con diritti di amministrazione:&lt;/p&gt;  &lt;p&gt;Prima verifichiamo lo stato attuale del servizio:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/4606.image_5F00_09131B93.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;border-bottom-width:0px;float:none;margin-left:auto;display:block;border-top-width:0px;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/5314.image_5F00_thumb_5F00_7C7548A9.png" width="428" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dopo impostiamo la tipologia di avvio del servizio usando il comando &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;sc config hvboot start=demand&amp;#160; (o anche start= demand con lo spazio) &lt;/h3&gt;  &lt;p&gt;Occorre riavviare la macchina. &lt;/p&gt;  &lt;p&gt;Al riavvio troviamo il servizio stoppato:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/1641.image_5F00_6B416B06.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0317.image_5F00_thumb_5F00_060D9113.png" width="423" height="206" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A questo punto dovremmo essere in grado di visualizzare le voci relative alla sospensione nella shutdown window&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/7462.image_5F00_2DF09072.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/7713.image_5F00_thumb_5F00_6007BAEF.png" width="272" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Al momento non è ancora abilitata l’ibernazione. Per abilitarla si possono seguire 2 strade:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;digitare nel command prompt &lt;strong&gt;powercfg /hibernate on&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;andare in Pannello di controllo (Control Panel) –&amp;gt; Opzioni di risparmio energetico (Power Options) –&amp;gt; “Specificare cosa avviene quando si chiude il coperchio” (Choose what closing the lid does).&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;In questa finestra si può notare in basso che la voce “hibernate” risulta disabilitata:&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/8244.image_5F00_62613CED.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/4130.image_5F00_thumb_5F00_0FE25CB1.png" width="264" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt; Per modificare queste impostazioni, tornare in alto e selezionare la seguente voce:&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/6281.image_5F00_7D2D62F9.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0654.image_5F00_thumb_5F00_7CC13004.png" width="374" height="61" /&gt;&lt;/a&gt; Il menù sarà abilitato, e si potrà quindi scegliere la voce “Hibernate”. &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Il risultato è questo: &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/1263.image_5F00_34FFA71D.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/6266.image_5F00_thumb_5F00_190E7225.png" width="256" height="264" /&gt;&lt;/a&gt;  &lt;p&gt;Siamo finalmente riusciti a riavere la funzionalità di ibernazione! :-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;E se avessi necessità di riavviare i servizi dell’hypervisor?&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Poiché al momento il servizio è stoppato, potrebbe essere visualizzato un errore nel momento in cui si avvia l’Hyper-V manager. Basterà riavviare il servizio da command prompt:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;net start hvservice &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0160.image_5F00_3BEF33D5.png"&gt;&lt;img title="image" style="border-top:0px;border-right:0px;border-bottom:0px;float:none;margin-left:auto;border-left:0px;display:block;margin-right:auto;" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0028.image_5F00_thumb_5F00_0C709F3C.png" width="388" height="181" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Naturalmente, nel momento in cui i servizi sono ripartiti, non sarà più possibile ibernare/sospendere il pc.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;3. Hyper-V v.3 su Windows 8 (Client)&lt;/h2&gt;  &lt;p&gt;La versione di Hyper-V presente su Windows 8 (versione client) RTM avrà a disposizione le funzionalità di ibernazione e sospensione integrate:&amp;#160; &lt;a title="http://www.virtualizationadmin.com/articles-tutorials/microsoft-hyper-v-articles/general/whats-new-windows-8-hyper-v-based-cloud-computing-part2.html" href="http://www.virtualizationadmin.com/articles-tutorials/microsoft-hyper-v-articles/general/whats-new-windows-8-hyper-v-based-cloud-computing-part2.html"&gt;http://www.virtualizationadmin.com/articles-tutorials/microsoft-hyper-v-articles/general/whats-new-windows-8-hyper-v-based-cloud-computing-part2.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Fonti:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/920730" href="http://support.microsoft.com/kb/920730"&gt;http://support.microsoft.com/kb/920730&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/tejas/archive/2009/03/10/hibernate-and-sleep-with-hyper-v-role-enabled.aspx" href="http://blogs.msdn.com/b/tejas/archive/2009/03/10/hibernate-and-sleep-with-hyper-v-role-enabled.aspx"&gt;http://blogs.msdn.com/b/tejas/archive/2009/03/10/hibernate-and-sleep-with-hyper-v-role-enabled.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://itproafrica.com/technology/powershell/enable-windows-power-saving-features-while-running-hyperv-on-windows-2008-r2/" href="http://itproafrica.com/technology/powershell/enable-windows-power-saving-features-while-running-hyperv-on-windows-2008-r2/"&gt;http://itproafrica.com/technology/powershell/enable-windows-power-saving-features-while-running-hyperv-on-windows-2008-r2/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1860" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="sleep" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/sleep/default.aspx" /><category term="windows server 8 beta" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/windows+server+8+beta/default.aspx" /><category term="hibernate" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/hibernate/default.aspx" /></entry><entry><title>Turitip #33: Spostare tutti i database di Sharepoint</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2012/02/13/turitip-33-spostare-tutti-i-database-di-sharepoint.aspx" /><id>/blogs/turibbio/archive/2012/02/13/turitip-33-spostare-tutti-i-database-di-sharepoint.aspx</id><published>2012-02-13T14:34:00Z</published><updated>2012-02-13T14:34:00Z</updated><content type="html">&lt;p&gt;Di seguito vi riporto un link in cui è illustrato come spostare, magari per motivi di spazio, tutti i database di Sharepoint 2010:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/cc512725.aspx" href="http://technet.microsoft.com/en-us/library/cc512725.aspx"&gt;http://technet.microsoft.com/en-us/library/cc512725.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1827" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="sharepoint2010" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/sharepoint2010/default.aspx" /></entry><entry><title>We love async – UgiAltNet Conference 2012</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2012/01/26/we-love-async-ugialtnet-conference-2012.aspx" /><id>/blogs/turibbio/archive/2012/01/26/we-love-async-ugialtnet-conference-2012.aspx</id><published>2012-01-26T20:13:00Z</published><updated>2012-01-26T20:13:00Z</updated><content type="html">&lt;p&gt;Il 21 Gennaio 2012 io ed Emanuele abbiamo tenuto all’UgiAltNet Conference 2012 una sessione su Async, il nuovo pattern Microsoft per implementare la programmazione asincrona in .Net. Devo dire che è stata un’esperienza bellissima, e che come sempre trovarsi di fronte persone che hanno le tue stesse passioni, aperte al confronto, simboleggia quella che da sempre per me (e sicuramente anche per Emanuele) è il significato di &lt;em&gt;community&lt;/em&gt;. Sfortunatamente però c’è anche una &lt;strong&gt;spiacevole notizia&lt;/strong&gt;: i fondatori di UgiAltNet hanno deciso che questa era la loro &lt;u&gt;ultima conferenza&lt;/u&gt; &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-sadsmile" alt="Triste" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/2500.wlEmoticon_2D00_sadsmile_5F00_5D102499.png" /&gt;. La decisione deriva da motivi che gli stessi fondatori hanno spiegato nella keynote, ovvero la filosofia AltNet è ormai stata sovrastata dall’interesse che la stessa Microsoft ha impiegato negli ultimi anni nei confronti dell’open-source (vedi Codeplex) e delle altre tecnologie più in generale. Personalmente mi ritengo comunque in dovere di ringraziare tutto il team di UgiAltNet per ciò che hanno realizzato nel corso di questi anni e per l’impegno che ogni volta hanno messo nell’organizzazione di una conferenza di livello nazionale.&lt;/p&gt;  &lt;p&gt;Detto questo vi lascio sotto le slides e il codice sorgente. Have fun!&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom:0px;background-color:#fcfcfc;padding-left:0px;padding-right:0px;padding-top:0px;" title="Preview" height="120" marginheight="0" src="https://skydrive.live.com/embed?cid=0DEABDE94A204849&amp;amp;resid=DEABDE94A204849%213367&amp;amp;authkey=AMeqLvIA5pCbeaw" frameborder="0" width="98" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom:0px;background-color:#fcfcfc;padding-left:0px;padding-right:0px;padding-top:0px;" title="Preview" height="327" marginheight="0" src="https://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&amp;amp;p2=1&amp;amp;p3=SDDEABDE94A204849!3368&amp;amp;p4=&amp;amp;ak=!AG7eiYVf3_1hNhk&amp;amp;kip=1&amp;amp;authkey=!AG7eiYVf3_1hNhk" frameborder="0" width="402" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1810" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="async" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/async/default.aspx" /><category term="tpl" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/tpl/default.aspx" /><category term="ugialtnet" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/ugialtnet/default.aspx" /><category term="await" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/await/default.aspx" /></entry><entry><title>Alla scoperta delle BSOD!</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/08/17/alla-scoperta-delle-bsod.aspx" /><id>/blogs/turibbio/archive/2011/08/17/alla-scoperta-delle-bsod.aspx</id><published>2011-08-17T21:23:00Z</published><updated>2011-08-17T21:23:00Z</updated><content type="html">&lt;p&gt;&lt;font size="2"&gt;Noi informatici siamo ormai abituati alla visualizzazione di una blue-screen di Windows. Sebbene molti di noi reagiscono con un sorriso, una battutina, oppure imprecando Zio Bill perché si ritiene che l’OS non sia in grado di funzionare da solo, molto spesso però non si determina quale sia l’effettiva causa della stessa.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;La cosa curiosa è che però non ci rendiamo conto che la soluzione è dinanzi ai nostri occhi! Ovvero, in un primo momento, non ci accorgiamo che Windows mostra una BSOD (&lt;em&gt;Blue screen of death&lt;/em&gt;) perché c’è qualcosa che non va nel nostro pc lato hardware o software (e spesso non si tratta del sistema operativo!). Vediamo insieme come capire cosa ha generato una BSOD.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Da qualche mesetto ho comprato un nuovo pc, e se c’è qualcosa che odio, è avere una BSOD su una macchina ancora in rodaggio. Motivo per cui, la comparsa della seguente schermata blue mi ha parecchio allertato:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;img src="http://www.malwaredictionary.com/wp-content/uploads/2011/04/How-Do-You-Fix-the-Bad-Pool-Caller-Error.png" width="640" height="479" alt="" /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;[fonte: &lt;/font&gt;&lt;a title="http://www.malwaredictionary.com/2011/04/bad-pool-caller/" href="http://www.malwaredictionary.com/2011/04/bad-pool-caller/"&gt;&lt;font size="1"&gt;http://www.malwaredictionary.com/2011/04/bad-pool-caller/&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; ]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Sebbene la prima volta che mi è comparsa ero a lavoro e non potevo indagare, alla seconda comparsa, mi sono rimboccato le maniche e ho cominciato a scavare. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Ho iniziato con il fare qualche ricerca su internet per comprendere cosa volesse dire BAD_POOL_CALLER. In sostanza si tratta di un errore di allocazione di memoria, spesso causato da un applicativo che tenta di liberare memoria già “liberata”. In dipendenza dei codici di errore generati nella BSOD, la ragione può comunque essere differente. Per maggiori dettagli si guardi qui: &lt;/font&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ff560185%28v=vs.85%29.aspx" href="http://msdn.microsoft.com/en-us/library/ff560185%28v=vs.85%29.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/en-us/library/ff560185%28v=vs.85%29.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Bisogna anche aggiungere che al riavvio del pc dopo una BSOD compare una finestra simile alla seguente:&lt;/font&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0458.image_5F00_6EB08882.png"&gt;&lt;font size="2"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/8508.image_5F00_thumb_5F00_54701F5E.png" width="458" height="327" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Questa finestra è senza alcun dubbio &lt;u&gt;essenziale&lt;/u&gt;! Sebbene non dica molto di per sé sull’errore, ci dà la possibilità di indagare su ciò che è accaduto: nel riquadro in rosso ci sono infatti i percorsi del dump della memoria e di un file xml contenente tutti i driver presenti sul pc.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Nasce spontanea la domanda: &lt;em&gt;a cosa servono questi file?&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Tra i due, sicuramente il primo ha una notevole importanza, contiene infatti una immagine della memoria minimizzata, che come il sito Microsoft dice: &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;“Un&amp;#39;immagine della memoria ridotta consente di registrare l&amp;#39;insieme minimo di informazioni utili per identificare il motivo dell&amp;#39;arresto anomalo del computer”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;Questo tipo di file di immagine della memoria comprende le seguenti informazioni: &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Il messaggio di arresto, i parametri e altri dati. &lt;/font&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Un elenco dei driver caricati. &lt;/font&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Il contesto del processore (PRCB) per il processore che si è arrestato in maniera anomala. &lt;/font&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Le informazioni relative al processo e il contesto kernel (EPROCESS) per il processo che si è arrestato in maniera anomala. &lt;/font&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Le informazioni relative al processo e il contesto kernel (ETHREAD) per il thread che si è arrestato in maniera anomala. &lt;/font&gt;&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font size="2"&gt;Lo stack delle chiamate in modalità kernel per il thread che si è arrestato in maniera anomala.&lt;/font&gt;&lt;/em&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="1"&gt;[fonte: &lt;/font&gt;&lt;a title="http://support.microsoft.com/kb/315263" href="http://support.microsoft.com/kb/315263"&gt;&lt;font size="1"&gt;http://support.microsoft.com/kb/315263&lt;/font&gt;&lt;/a&gt;&lt;font size="1"&gt; ]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Tali file, vengono salvati nella cartella &lt;em&gt;“%SystemRoot%\Minidump”&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Ma come visualizzarne il contenuto? Se proviamo ad aprire il file .dmp in notepad++ il risultato è questo:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/7026.image_5F00_60256690.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/2475.image_5F00_thumb_5F00_5FB9339B.png" width="356" height="110" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Nulla di comprensibile quindi! In realtà, per poter accedere al file .dmp e quindi visualizzare cosa ha generato la nostra BSOD abbiamo bisogno di installare WinDbg. Tale utility si trova nel &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=11800" target="_blank"&gt;Windows driver kit&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Una volta installato il WDK abbiamo bisogno di impostare una cartella in cui saranno contenuti i simboli per aiutare il debugger a fare il suo lavoro. Tali simboli, (che spesso ritroviamo in VS quando usiamo il debugger), posso essere scaricati direttamente dai server Microsoft impostando il relativo path per il download, ovvero una cartella da noi creata. In genere si crea una cartella “Symbols” in C:.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In seguito, apriamo WinDbg dal menù start, selezioniamo la voce “Symbol File Path” dal menù File:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/7674.image_5F00_106C3B47.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0714.image_5F00_thumb_5F00_24F18AC5.png" width="244" height="47" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;ed incolliamo la seguente riga:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;e poi OK.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Tale riga informa WinDbg che può usare il server Microsoft per scaricare i simboli utili al debugger e può usare la cartella C:\Symbols, precedentemente creata, come spazio di appoggio. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;(Maggiori info su WinDbg e sui simboli qui: &lt;a title="http://msdn.microsoft.com/en-us/windows/hardware/gg462988" href="http://msdn.microsoft.com/en-us/windows/hardware/gg462988"&gt;http://msdn.microsoft.com/en-us/windows/hardware/gg462988&lt;/a&gt;).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Adesso siamo finalmente pronti per aprire il nostro file .dmp.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Sempre in WinDbg: File –&amp;gt; Open Crash Dump. Se vi compare un messaggio relativo a permessi insufficienti, basterà dare all’utente loggato, tutti i permessi su quel file, in caso contrario, potete copiare il file .dmp in un’altra posizione sulla vostra macchina e riprovare.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Una volta aperto si apre una nuova finestra:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/3414.image_5F00_4F5DBBE2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/6201.image_5F00_thumb_5F00_46F9E68B.png" width="600" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;dove finalmente riusciamo a scoprire qualcosa relativa alla BSOD. In particolare, dopo aver caricato i simboli notiamo già che in questo file di dump, ci viene fatto presente che la possibile causa potrebbe derivare da un driver di nome &lt;em&gt;rrnetcap.sys&lt;/em&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Se volessimo ulteriori informazioni, possiamo usare il comando “!analyze –v”, dove avremo finalmente l’errore generato:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/4251.image_5F00_4BFC243A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/8272.image_5F00_thumb_5F00_5FA90DCE.png" width="629" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;e poco più avanti anche il modulo che lo ha generato:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0574.image_5F00_69FA322E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/6648.image_5F00_thumb_5F00_09A90BF7.png" width="513" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;BINGO! Adesso siamo sicuri che la BSOD è stata generata da questo modulo. &lt;/p&gt;  &lt;p&gt;Non resta che cercare su internet a cosa serve questo modulo e capire se occorre aggiornarlo oppure reinstallarlo. Nel mio caso, questo modulo è del software Tunebite, un programma che serve per creare copie di backup di file audio WMA o MP3 che contengono DRM.&lt;/p&gt;  &lt;p&gt;In particolare, indagando sul forum della Audials (&lt;a title="http://audials.com/forum/index.php?page=Thread&amp;amp;postID=37869" href="http://audials.com/forum/index.php?page=Thread&amp;amp;postID=37869"&gt;http://audials.com/forum/index.php?page=Thread&amp;amp;postID=37869&lt;/a&gt;), che produce il suddetto software, mi sono accorto che non sono il primo a cui si è verificato tale problema, dipeso soprattutto dal fatto che ho un sistema operativo a 64 bit…&lt;/p&gt;  &lt;p&gt;Posso solo aggiungere che in tal caso sono stato fortunato! In sostanza il problema che mi si è verificato è stato generato da un driver non correttamente configurato per girare su Win7 x64. &lt;/p&gt;  &lt;p&gt;Talvolta però la ricerca delle cause di una BSOD può essere più complessa e le soluzioni al problema talvolta spiacevoli, soprattutto se si tratta di hardware… Il mio consiglio è comunque, prima di provare a smontare, cambiare ram (operazione molto comune in caso di BSOD!), di dare una possibilità a WinDbg, sperando che non ci porti a drastiche risoluzioni.&lt;/p&gt;  &lt;p&gt;Infine non posso non condividere con voi questo fantastico screen saver, che ho personalmente installato sul mio pc, e non faccio altro che ridere vedendo la faccia attonita delle persone quando lo vedono: &lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb897558" href="http://technet.microsoft.com/en-us/sysinternals/bb897558"&gt;http://technet.microsoft.com/en-us/sysinternals/bb897558&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Enjoy it!&lt;/em&gt; &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Sorriso" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0184.wlEmoticon_2D00_smile_5F00_62028FCC.png" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[altra fonte: &lt;a title="http://windows7themes.net/how-to-open-dmp-files-in-windows-7.html" href="http://windows7themes.net/how-to-open-dmp-files-in-windows-7.html"&gt;http://windows7themes.net/how-to-open-dmp-files-in-windows-7.html&lt;/a&gt; ]&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1667" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="windows driver kit" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/windows+driver+kit/default.aspx" /><category term="windbg" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/windbg/default.aspx" /><category term="BSOD" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/BSOD/default.aspx" /></entry><entry><title>TuriTip #32: Registrare una DLL in GAC con C#</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/07/16/turitip-32-registrare-una-dll-in-gac-con-c.aspx" /><id>/blogs/turibbio/archive/2011/07/16/turitip-32-registrare-una-dll-in-gac-con-c.aspx</id><published>2011-07-16T18:40:00Z</published><updated>2011-07-16T18:40:00Z</updated><content type="html">&lt;p&gt;Tentando di risolvere un problema su un mio applicativo, ho trovato in rete uno snippet per registrare una DLL in GAC con C#. &lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; GacHelper&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Add strong-named assembly to GAC. DLL must be in current directory.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;assemblyName&amp;quot;&amp;gt;name of assembly (without .dll extension).&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Register(String assemblyName)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         ProcessStartInfo processStartInfo = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ProcessStartInfo(&lt;span style="color:#006080;"&gt;&amp;quot;gacutil.exe&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;/i {0}.dll&amp;quot;&lt;/span&gt;, assemblyName));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         processStartInfo.UseShellExecute = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;         Process process = Process.Start(processStartInfo);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         process.WaitForExit();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// Remove assembly from GAC.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;     &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;assemblyName&amp;quot;&amp;gt;name of assembly (without .dll extension).&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Unregister(String assemblyName)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         ProcessStartInfo processStartInfo = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ProcessStartInfo(&lt;span style="color:#006080;"&gt;&amp;quot;gacutil.exe&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;/u {0}.dll&amp;quot;&lt;/span&gt;, assemblyName));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;         processStartInfo.UseShellExecute = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         Process process = Process.Start(processStartInfo);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;         process.WaitForExit();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Fonte: &lt;a title="http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7d3165cf-ca3b-43cc-8f77-a46dbf38f13d/" href="http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7d3165cf-ca3b-43cc-8f77-a46dbf38f13d/"&gt;http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/7d3165cf-ca3b-43cc-8f77-a46dbf38f13d/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy it!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1647" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="C#" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/C_2300_/default.aspx" /><category term="dll" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/dll/default.aspx" /><category term="gac" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/gac/default.aspx" /></entry><entry><title>TuriTip #31: Convertire una stringa in enum C#</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/07/06/turitip-31-convertire-una-stringa-in-enum-c.aspx" /><id>/blogs/turibbio/archive/2011/07/06/turitip-31-convertire-una-stringa-in-enum-c.aspx</id><published>2011-07-05T23:46:00Z</published><updated>2011-07-05T23:46:00Z</updated><content type="html">&lt;p&gt;Vi è mai capitato di dover convertire una stringa in un valore di una enumerazione?&lt;/p&gt;  &lt;p&gt;Ecco come si può fare:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;enum&lt;/span&gt; animali { cane, gatto};&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; ...&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; Animali myAnimals = (Animali)Enum.Parse(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(Animali), &lt;span style="color:#006080;"&gt;&amp;quot;cane&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-thumbsup" alt="Pollice in su" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/8345.wlEmoticon_2D00_thumbsup_5F00_0BCA2994.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1635" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="enum" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/enum/default.aspx" /><category term="C#" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/C_2300_/default.aspx" /></entry><entry><title>L’evoluzione di Facebook</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/04/13/l-evoluzione-di-facebook.aspx" /><id>/blogs/turibbio/archive/2011/04/13/l-evoluzione-di-facebook.aspx</id><published>2011-04-13T21:42:00Z</published><updated>2011-04-13T21:42:00Z</updated><content type="html">&lt;p&gt;Oggi giorno Facebook ha senza alcun dubbio la più complessa infrastruttura web. Partito da un server “standard”, si ritrova attualmente con un multi-datacenter per ospitare l’intero social network. Seguite con Jason Sobel (FB Infrastructure Engineer) la sua completa evoluzione:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.infoq.com/presentations/Infrastructure-at-Facebook" href="http://www.infoq.com/presentations/Infrastructure-at-Facebook"&gt;http://www.infoq.com/presentations/Infrastructure-at-Facebook&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1479" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="facebook" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/facebook/default.aspx" /></entry><entry><title>TuriTip #30: Administrator permission per Team Foundation Server</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/04/12/turitip-30-administrator-permission-per-team-foundation-server.aspx" /><id>/blogs/turibbio/archive/2011/04/12/turitip-30-administrator-permission-per-team-foundation-server.aspx</id><published>2011-04-12T20:51:52Z</published><updated>2011-04-12T20:51:52Z</updated><content type="html">&lt;p&gt;Nei seguenti link, potete trovare interessanti informazioni relative alla configurazione dei permessi per gli amministratori di TFS&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/bb552341.aspx" href="http://msdn.microsoft.com/en-us/library/bb552341.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb552341.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/dd547204.aspx" href="http://msdn.microsoft.com/en-us/library/dd547204.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd547204.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Enjoy it!&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1476" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /></entry><entry><title>Turibbio @ UgiAltNet Conference 2011</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/02/23/turibbio-ugialtnet-conference-2011.aspx" /><id>/blogs/turibbio/archive/2011/02/23/turibbio-ugialtnet-conference-2011.aspx</id><published>2011-02-23T12:56:00Z</published><updated>2011-02-23T12:56:00Z</updated><content type="html">&lt;p&gt;Sabato 19 sono andato a Milano per la UgiAltNetConference. E’ stata la prima volta per me andare ad una conferenza organizzata dalla community UgiAlt.Net e devo dire che è stata una esperienza davvero interessante. &lt;/p&gt;  &lt;p&gt;Il primo aspetto positivo della giornata è stato incontrare &lt;a href="http://blogs.ugidotnet.org/PietroLibroBlog/Default.aspx"&gt;Pietro Libro&lt;/a&gt; nel treno all’andata. Nonostante le 2 orette di sonno da recuperare il viaggio è stato molto piacevole. Una volta arrivati a Milano poi, dopo la registrazione e la Keynote, si è partiti subito con le sessioni.&lt;/p&gt;  &lt;p&gt;La prima sessione che ho seguito è stata quella di Pietro e &lt;a href="http://www.martinobordin.it/default.aspx"&gt;Martino Bordin&lt;/a&gt; che ci hanno illustrato una panoramica delle varie funzionalità supportate da EF 5(CTP) e NHibernate 3. Inutile dire che non si smette mai di imparare :). In particolare ho trovato interessantissimo l’oggetto DBContext di EF (di cui ero non conoscevo, essendo un pò a digiuno di EF…). Anche la validazione è niente male, di cui potete trovare informazioni qui: &lt;a title="http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx" href="http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx"&gt;http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx&lt;/a&gt;. Un complimentone a Pietro per l’esposizione semplice e concisa (nonostante il poco tempo a disposizione!)&amp;#160; degli argomenti.&lt;/p&gt;  &lt;p&gt;Anche per NH 3 le cose dette sono davvero interessanti, e sono state spunto per me per continuare a studiare questo interessante O/RM.&lt;/p&gt;  &lt;p&gt;Le sessioni sono poi continuate con quella di &lt;a href="http://www.geniodelmale.info/"&gt;Lorenzo Barbieri&lt;/a&gt; su WP7. Lorenzo ci ha fatto una sorpresona portandoci a vedere il primo office tablet della Microsoft che è già disponibile sul mercato tramite l’azienda &lt;a href="http://www.ergo.it/Default.aspx"&gt;Ergo Spa&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Innanzitutto occorre precisare che non è decisamente l’alternativa dell’IPad. Non stiamo parlando di un Media Tablet, ma di un Office Tablet, che si presta a scenari di utilizzo totalmente differenti da quelli dell’Ipad. Questo office tablet monta sistema operativo Windows 7 Premium, anche se quello che ho provato io montava la versione Ultimate (e girava egregiamente). &lt;/p&gt;  &lt;p&gt;Vi posto 2 foto fatte con il mio stupendo WP7 :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/3757.WP_5F00_0000972_5F00_534A4408.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="WP_000097 (2)" border="0" alt="WP_000097 (2)" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/2350.WP_5F00_0000972_5F00_thumb_5F00_4B52A1A6.jpg" width="423" height="318" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/7510.WP_5F00_0000992_5F00_4AE66EB1.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="WP_000099 (2)" border="0" alt="WP_000099 (2)" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/5658.WP_5F00_0000992_5F00_thumb_5F00_3F50B172.jpg" width="428" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;La giornata è poi continuata con &lt;a href="http://www.davidemauri.it/"&gt;Davide Mauri&lt;/a&gt; con una sessione dal titolo “Tutto quello che avreste voluto sapere sui database e non avete osato chiedere – Reprise” in cui ogni attendente poteva liberamente fare domande. Devo solo dire una cosa: uau! Davide Mauri è una persona veramente in gamba, ha una preparazione ed una semplicità di esposizione che potrebbe insegnare ad un bambino di 7 anni a fare stored procedure in TSql!&lt;/p&gt;  &lt;p&gt;Last but not least, arriviamo quasi al termine della giornata con le sessioni su NHibernate! In diretta dall’Argentina, &lt;a href="http://fabiomaulo.blogspot.com/"&gt;Fabio Maulo&lt;/a&gt; ci presenta il suo confORM tramite una demo seguita da delucidazioni su tutto ciò che confORM è e NON è. Inoltre, in anteprima assoluta ci presenta anche NHibernate Envers, un framework per abilitare l’audit anche su NHibernate. Maggiori info e code le trovate qui: &lt;a title="https://bitbucket.org/RogerKratz/nhibernate.envers" href="https://bitbucket.org/RogerKratz/nhibernate.envers"&gt;https://bitbucket.org/RogerKratz/nhibernate.envers&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Che dire, tutto sommato una giornata piacevole, piena ed interessante, che ha sicuramente ricompensato il fatto di aver passato 7 ore in treno per arrivare/tornare fino a Milano :-).&amp;#160; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1413" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="nhibernate" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/nhibernate/default.aspx" /><category term="wp7" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/wp7/default.aspx" /><category term="asp.net" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/asp.net/default.aspx" /><category term="ugialtnet_conference" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/ugialtnet_5F00_conference/default.aspx" /></entry><entry><title>TuriTip #29: Unable to generate a temporary class (result=1). error CS2008</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/02/16/turitip-29-unable-to-generate-a-temporary-class-result-1-error-cs2008.aspx" /><id>/blogs/turibbio/archive/2011/02/16/turitip-29-unable-to-generate-a-temporary-class-result-1-error-cs2008.aspx</id><published>2011-02-16T18:28:00Z</published><updated>2011-02-16T18:28:00Z</updated><content type="html">&lt;p&gt;Se vi trovate dinanzi questo errore “Unable to generate a temporary class (result=1). error CS2008”, significa che l’utente ASP.NET non ha i permessi di scrittura nella cartella C:\Windows\Temp.&lt;/p&gt;  &lt;p&gt;A tal punto pare ovvia la domanda: perché ASP.NET deve accedere alla cartella C:\Windows\Temp?!?!?&lt;/p&gt;  &lt;p&gt;La risposta è in questa pagina di MSDN: &lt;a title="http://msdn.microsoft.com/en-us/library/kwzs111e(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/kwzs111e(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/kwzs111e(v=VS.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quindi… se avete un servizio web nella vostra applicazione… preparatevi a distribuire permessi :D&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy it!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1406" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="WCF" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/WCF/default.aspx" /><category term="asp.net_user" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/asp.net_5F00_user/default.aspx" /><category term="C:\Windows\Temp" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/C_3A005C00_Windows_5C00_Temp/default.aspx" /></entry><entry><title>TuriTip #28: Disattivare l’Attach Security Warning per il debugging in VS2010</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/02/11/disattivare-l-attach-security-warning-per-il-debugging-in-vs2010.aspx" /><id>/blogs/turibbio/archive/2011/02/11/disattivare-l-attach-security-warning-per-il-debugging-in-vs2010.aspx</id><published>2011-02-11T13:28:00Z</published><updated>2011-02-11T13:28:00Z</updated><content type="html">&lt;p&gt;Per disattivare la noiosa visualizzazione di questo popup in Visual Studio 2010 mentre siete in debug:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0871.image_5F00_6EE343D7.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/8512.image_5F00_thumb_5F00_4A51B653.png" width="329" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Potete procedere in questo modo:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Pannello di controllo –&amp;gt; Strumenti di Amministrazione –&amp;gt; Criteri di sicurezza locali –&amp;gt; Impostazioni Sicurezza –&amp;gt; Criteri locali –&amp;gt; Assegnazione diritti utente –&amp;gt; Debug di Programmi –&amp;gt; aggiungere il vostro utente alla lista.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[UPDATE] : Se non dovesse funzionare provate ad andare in: &lt;em&gt;Regedit –&amp;gt; HKEY_CURRENT_USER –&amp;gt; Software –&amp;gt; Microsoft –&amp;gt; VisualStudio –&amp;gt; 10.0 –&amp;gt; Debugger –&amp;gt; Selezionare la voce DisableAttachSecurityWarning ed impostare il valore ad 1&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Enjoy it :-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1396" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="VS2010" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/VS2010/default.aspx" /><category term="attach_security_warning" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/attach_5F00_security_5F00_warning/default.aspx" /></entry><entry><title>TuriTip #27: Gestire diversi app.config in base alla configurazione di compilazione attiva (debug/release)</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2011/01/12/gestire-diversi-app-config-in-base-alla-configurazione-di-compilazione-attiva-debug-release.aspx" /><id>/blogs/turibbio/archive/2011/01/12/gestire-diversi-app-config-in-base-alla-configurazione-di-compilazione-attiva-debug-release.aspx</id><published>2011-01-12T12:17:00Z</published><updated>2011-01-12T12:17:00Z</updated><content type="html">&lt;p&gt;In ambiente di sviluppo un programmatore è solito usare servizi WCF hostati sulla propria macchina per effettuarne il debug. &lt;/p&gt;  &lt;p&gt;Una volta che tali servizi WCF sono considerati “stabili” e quindi pronti per essere deployati su un server, occorre aggiornare le url del web.config o in questo caso, dell’app.config relative ai proxy di tali servizi. Purtroppo però, come spesso capita, il codice può essere soggetto a modifiche, nuove richieste, che richiederebbero un “downgrade” del nostro app.config, per far ri-funzionare il tutto in ambiente di sviluppo. &lt;/p&gt;  &lt;p&gt;Di sicuro, l’opzione commenta/decommenta è la più veloce da implementare (ed anche la più pratica!). Ma per gli affezionati alla filosofia “&lt;a href="http://blog.objectmentor.com/articles/2008/04/08/clean-code-whew"&gt;clean-code&lt;/a&gt;”, trovarsi di fronte a tali cose nel codice, da quella sensazione di &lt;em&gt;sporco&lt;/em&gt; che può essere risolta solo trovando una soluzione migliore al problema.&lt;/p&gt;  &lt;p&gt;Ecco di seguito la soluzione che ho testato personalmente. &lt;/p&gt;  &lt;p&gt;In particolare, ho una class library, che ha dei riferimenti a servizi WCF. Tali servizi, come ben sappiamo usano l’app.config per storare gli endpoint. Gli endpoint sono differenti in ambiente di debug e release. Mi sono creato quindi 2 app.config:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/5861.image_5F00_6F8A2D49.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://dotnetcampania.org/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/turibbio.metablogapi/0456.image_5F00_thumb_5F00_2F5413CF.png" width="135" height="41" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Il primo è specifico per l’ambiente di debug, il secondo per l’ambiente di produzione.&lt;/p&gt;  &lt;p&gt;Ora non ci resta che dire a VS quale usare in base al contesto di compilazione. Per ottenere ciò abbiamo necessità di agire tramite notepad sul file .csproj. In particolare:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Configuration&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Condition&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot; &amp;#39;$(Configuration)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Debug&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Platform&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Condition&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot; &amp;#39;$(Platform)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;AnyCPU&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Platform&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;   ....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;appConfig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;App.Config&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;appConfig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;   ....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Dobbiamo dire in base al tipo di compilazione, quale file di configurazione usare tramite il tag “appconfig”.&lt;/p&gt;

&lt;p&gt;Questa è la versione per la Release:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Condition&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot; &amp;#39;$(Configuration)|$(Platform)&amp;#39; == &amp;#39;Release|AnyCPU&amp;#39; &amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;   ....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;appConfig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;App.Release.Config&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;appConfig&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;   ....&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Unica pecca è che, se abbiamo tutti i file di configurazione nominati diversamente da “app.config”, e proviamo ad aggiungere un servizio WCF tramite il wizard di VS, ci ricrea in automatico un file di configurazione di nome app.config e non fa il merge del nuovo endpoint nel file di configurazione già presente. &lt;/p&gt;

&lt;p&gt;Un suggerimento, (grazie &lt;a href="http://dotnetside.org/blogs/fabio/default.aspx"&gt;Fabio&lt;/a&gt;!) può essere quello di usare l’svcutil.exe per generare il proxy ed impostare le opzioni config e mergeConfig:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; svcutil.exe ... /config:nome.config /mergeConfig&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In tal modo non sarà ricreato un nuovo file di configurazione ma sarà utilizzato quello passato come parametro all’svcutil.exe.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;HTH&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1364" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="TuriTip" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/TuriTip/default.aspx" /><category term="WCF" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/WCF/default.aspx" /><category term="aspnet" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/aspnet/default.aspx" /><category term="app.config" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/app_2E00_config/default.aspx" /></entry><entry><title>Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings Error</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2010/12/14/microsoft-sqlserver-configuration-landingpage-properties-settings-error.aspx" /><id>/blogs/turibbio/archive/2010/12/14/microsoft-sqlserver-configuration-landingpage-properties-settings-error.aspx</id><published>2010-12-14T17:27:27Z</published><updated>2010-12-14T17:27:27Z</updated><content type="html">&lt;p&gt;Se vi capita di aprire l’installer di SQL Server 2008 r2 e vi compare il suddetto errore, provate a seguire questa soluzione:&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/VisualStudio/feedback/details/542693/jit-error?wa=wsignin1.0" href="https://connect.microsoft.com/VisualStudio/feedback/details/542693/jit-error?wa=wsignin1.0"&gt;https://connect.microsoft.com/VisualStudio/feedback/details/542693/jit-error?wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1339" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="sql server 2008 r2" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/sql+server+2008+r2/default.aspx" /><category term="jit_errror_sqlserver" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/jit_5F00_errror_5F00_sqlserver/default.aspx" /></entry><entry><title>Disponibile la Visual Studio 2010 ALM Virtual Machine</title><link rel="alternate" type="text/html" href="/blogs/turibbio/archive/2010/12/13/disponibile-la-visual-studio-2010-alm-virtual-machine.aspx" /><id>/blogs/turibbio/archive/2010/12/13/disponibile-la-visual-studio-2010-alm-virtual-machine.aspx</id><published>2010-12-13T18:25:00Z</published><updated>2010-12-13T18:25:00Z</updated><content type="html">&lt;p&gt;Sul blog di Brian Keller è disponibile la nuova VM relativa a tutto il processo di gestione di vita di un software. Tale VM include una copia funzionante fino al 1 Giugno 2011 di WS2008, VS2010, TFS2010, SQL Server 2008, Hands-on-labs e tanto altro ancora. &lt;/p&gt;  &lt;p&gt;Scaricatela qui: &lt;a title="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx" href="http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx"&gt;http://blogs.msdn.com/b/briankel/archive/2010/06/25/now-available-visual-studio-2010-rtm-virtual-machine-with-sample-data-and-hands-on-labs.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnetcampania.org/aggbug.aspx?PostID=1337" width="1" height="1"&gt;</content><author><name>Turibbio</name><uri>http://dotnetcampania.org/members/Turibbio/default.aspx</uri></author><category term="tfs_2010" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/tfs_5F00_2010/default.aspx" /><category term="brian_keller" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/brian_5F00_keller/default.aspx" /><category term="application lifecycle management" scheme="http://dotnetcampania.org/blogs/turibbio/archive/tags/application+lifecycle+management/default.aspx" /></entry></feed>
