<?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: Sharepoint</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>2013-5-21T12:12:10+01:00</modified><author><name>Marchi Giuseppe</name><url>http://www.peppedotnet.it/Blog/</url></author><entry><title>Quando uno sviluppatore SharePoint incontra JavaScript</title><id>/Blog/WhenSharePointDevsMeetJavaScript.aspx</id><created>2013-5-21T12:12:10+01:00</created><content type="text/html" mode="escaped">E' da un po' che mi diverto con JavaScript. Non gli avevo mai dato peso, anzi, a dir la verità ho pensato spesso che fosse un linguaggio da pazzi schizzati con la totale assenza di regole (ed io, che sono nato negli stessi anni di C#, alle regole ci sono affezionato).
&lt;br /&gt;Perché JavaScript? Perché ormai le applicazioni web non possono esistere senza. Senza l'appeal che è in grado di dare anche solo una piccola animazione o la totale assenza di postback. 
&lt;br /&gt;Quando infatti ci si approccia ad una nuova applicazione web di questi tempi, è impossibile ormai non prescindere da:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;uno sviluppo di back-end: a cui ormai siamo abituati, anche su SharePoint con il suo modello a oggetti,&lt;/li&gt;&lt;li&gt;uno sviluppo di front-end: ed è qui la novità.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Dicesi sviluppo di front-end tutta l'architettura client-side della nostra applicazione web (JavaScript) assieme all'implementazione della struttura della pagina (HTML5) e del suo aspetto grafico (CSS3).
&lt;br /&gt;Ecco quindi che uno sviluppatore SharePoint con me, abituato ad utilizzare il postback, i web control e, per il suo periodo di massimo splendore Silverlight, si ritrova ad imparare tutto un nuovo mondo di tecnologie a cui fino ad ora era rimasto allo scuro.
&lt;br /&gt;Oltretutto, con l'arrivo di SharePoint 2013, JavaScript è diventata una vera e propria &lt;b&gt;CORE SKILL&lt;/b&gt; per uno sviluppatore SharePoint, mentre invece in tutti questi anni siamo diventati dei super eroi del server object model.
&lt;br /&gt;Quello che mi serviva era capire bene erano le basi di questo linguaggio e i principali pattern di sviluppo che mi avrebbero permesso di scrivere applicazioni di front-end robuste, in linea con gli standard del momento e con un'alta user experience.
&lt;br /&gt;Okkei, la prima cosa che ho imparato quindi è che JavaScript è un linguaggio dinamico, che non ha un compilatore (ma usa il browser per beccare solo gli errori a run-time), con solamente 7 tipi primitivi, case sensitive, basato sul concetto di funzioni, che (e qui è stata una grande sorpresa) è orientato agli oggetti e che, soprattutto, &lt;b&gt;JAVASCRIPT NON E’ C#&lt;/b&gt;.
&lt;br /&gt;Non è C# perché permette delle cose scellerate tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function foo() {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;for&lt;/span&gt;(var i = 0; i &lt; 10; i++) { 
&lt;br /&gt;		&lt;span style="color: #008200"&gt;//do anything you want&lt;/span&gt;
	}
&lt;br /&gt;	alert(i); &lt;span style="color: #008200"&gt;//will display 10&lt;/span&gt;
}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;...tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function foo() {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;for&lt;/span&gt;(var i = 0; i &lt; arguments.length; i++) { 
&lt;br /&gt;		console.log(arguments[i]);
&lt;br /&gt;	}
&lt;br /&gt;}
&lt;br /&gt;foo('here', 'you','can','pass','what','ever','you','want');&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;...e tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;function checkEquals(a, b) {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;return&lt;/span&gt; a == b;
&lt;br /&gt;}
&lt;br /&gt;function multiplication(a, b) {
&lt;br /&gt;	&lt;span style="color: #0000FF"&gt;return&lt;/span&gt; a * b;
&lt;br /&gt;}
&lt;br /&gt;var result = checkEquals('', 0); &lt;span style="color: #008200"&gt;//returns true&lt;/span&gt;
var result2 = checkEquals('0', 0); &lt;span style="color: #008200"&gt;//returns true&lt;/span&gt;
var result3 = multiplication('4', 4); &lt;span style="color: #008200"&gt;//returns 16&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Cose che per noi sviluppatori C# sono da pazzi.	
&lt;br /&gt;Al che ho cercato di prendermi un po' di capisaldi ed è venuto fuori che:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;le variabili si istanziano utilizzando la parola chiave "var" e che, in base al valore attribuito, cambiano il loro tipo (anche a run-time)&lt;/li&gt;&lt;li&gt;l'esecuzione del codice va dall'alto al basso della pagina&lt;/li&gt;&lt;li&gt;esistono gli oggetti e che possono essere creati in differenti maniere:&lt;ul&gt;&lt;li&gt;sfruttando la classe Object&lt;/li&gt;&lt;li&gt;sfruttando la sintassi JSON (detta anche "literal notation")&lt;/li&gt;&lt;li&gt;sfruttando le funzioni&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;esistono anche le proprietà e i metodi&lt;/li&gt;&lt;li&gt;esistono i namespace e il namespace di root "window"&lt;/li&gt;&lt;li&gt;esistono i concetti di scoping delle variabili ed ereditarietà (che sono molto diversi da quelli di C#)&lt;/li&gt;&lt;li&gt;l'ugualianza (o la disugualianza) si usa tramite l'uso di 3 uguali, perchè con 2 uguali viene fatto un cast e poi il controllo del valore&lt;/li&gt;&lt;li&gt;una funzione JavaScript in realtà è un oggetto&lt;/li&gt;&lt;li&gt;una funzione JavaScript può essere assegnata ad una variabile, ad un oggetto, ad una proprietà o può essere passata come parametro&lt;/li&gt;&lt;li&gt;una funzione JavaScript ha la parola chiave "this" (che ha però un valore diverso da quello che ha in C#)&lt;/li&gt;&lt;li&gt;esiste l'oggetto "prototype", che viene creato in automatico ogni volta che si crea una nuova istanza di un oggetto e che è veramente utile per risparmiare memoria&lt;/li&gt;&lt;li&gt;esiste il concetto di closure, che da una "durata di vita" alle variabili diversa da quella delle variabili C#&lt;/li&gt;&lt;li&gt;se inserisco la stringa 'use strict' come prima riga del mio script mi assicuro di scrivere codice pulito ed evitare sfondoni come dimenticarmi l'utilizzo della parola chiave "var" per la definizione di una variabile (così è il browser che me lo indica a run-time)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Queste nozioni mi sono diventate veramente utili quando poi mi sono messo a studiare un po’ di pattern. Ho letto più volte con piacere questo:
&lt;br /&gt;&lt;a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/" title="JavaScript Pattern Book" target="_blank"&gt;http://addyosmani.com/resources/essentialjsdesignpatterns/book/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' veramente una bella risorsa, ve la consiglio.
&lt;br /&gt;Da lì ho capito che potevo scrivere del codice JavaScript che assomigliasse un po' di più al codice C# cui sono stato abituato fino a poco tempo fa e la cosa mi piaceva molto.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #008200"&gt;//namespaces&lt;/span&gt;
window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.SP13 = window.D4S.SP13 || {};
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//constructor pattern&lt;/span&gt;
D4S.SP13.Contact = function(firstName, lastName, mail, id) {
&lt;br /&gt;	var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;	self.FirstName = firstName;
&lt;br /&gt;	self.Title = lastName;
&lt;br /&gt;	self.Id = id;
&lt;br /&gt;	self.EMail = mail;
&lt;br /&gt;	self.__metadata = { 'type': 'SP.Data.RubricaListItem' };
&lt;br /&gt;	self.ShowFullName = function() {
&lt;br /&gt;		alert(self.FirstName + ' ' + self.Title);
&lt;br /&gt;	};
&lt;br /&gt;}
&lt;br /&gt;&lt;span style="color: #008200"&gt;//instances&lt;/span&gt;
var peppe = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact('Peppe', 'Marchi', 'giuseppe.marchi@dev4side.com');
&lt;br /&gt;var miro = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact('Miro', 'Radenovic', 'miro.radenovic@dev4side.com');
&lt;br /&gt;peppe.ShowFullName(); &lt;span style="color: #008200"&gt;//Peppe Marchi&lt;/span&gt;
miro.ShowFullName(); &lt;span style="color: #008200"&gt;//Miro Radenovic&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ho capito anche che, se volevo fare le cose per bene e controllare la memoria che la mia applicazione di front-end occupava all'interno del browser, dovevo farmi amico l’oggetto "prototype" e sfruttarlo nel migliore dei modi.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.SP13 = window.D4S.SP13 || {};
&lt;br /&gt;
&lt;br /&gt;D4S.SP13.Contact = function (id, firstname, lastname, email) {
&lt;br /&gt;    var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;    self.Id = id;
&lt;br /&gt;    self.FirstName = firstname;
&lt;br /&gt;    self.Title = lastname;
&lt;br /&gt;    self.EMail = email;
&lt;br /&gt;};
&lt;br /&gt;D4S.SP13.Contact.prototype.ShowFullName = function () {
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.FirstName + ' ' + &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.Title;
&lt;br /&gt;};
&lt;br /&gt;var peppe = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact(1, 'Peppe', 'Marchi', 'giuseppe.marchi@dev4side.com');
&lt;br /&gt;var miro = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.SP13.Contact(2, 'Miro', 'Radenovic', 'miro.radenovic@dev4side.com');
&lt;br /&gt;
&lt;br /&gt;alert(peppe.ShowFullName());
&lt;br /&gt;alert(miro.ShowFullName());&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Fin quando poi ho parlato con &lt;a href="https://twitter.com/robymes" title="Roberto Messora" target="_blank"&gt;Roberto&lt;/a&gt; che mi ha introdotto &lt;a href="http://knockoutjs.com" title="KnockoutJs" target="_blank"&gt;KnockoutJs&lt;/a&gt;, libreria open-source con qualche anno di esperienza ormai che mi permette di implementare un pattern che conosco molto bene dalle mie esperienze di lavoro con Silverlight: il pattern MVVM (Model-View-ViewModel).
&lt;br /&gt;Fantastico!
&lt;br /&gt;Con questa libreria e veramente poche righe di codice, si fanno delle cose pazzesche. Questo perché KnockoutJs ti permette di fare un binding dichiarativo sulla pagina, staccando totalmente quella che è l'interfaccia dell'applicazione dalla logica di business ed occupandosi di fare refresh della UI a fronte di un cambiamento di una proprietà del ViewModel (proprietà definita "osservabile"), di utilizzare dei template di rendering HTML e di fare dependency tracking.
&lt;br /&gt;Oltre al sito ufficiale della libreria, vermante ben fatto, vi lascio qualche lettura molto interessante:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ugidotnet.org/Article/Detail/1340" title="KnockoutJs su UgiDotNet" target="_blank"&gt;http://www.ugidotnet.org/Article/Detail/1340&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ugidotnet.org/Article/Detail/1342" title="KnockoutJs su UgiDotNet" target="_blank"&gt;http://www.ugidotnet.org/Article/Detail/1342&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;Abbiamo visto già un po' di sintassi di KnockoutJs nei precedenti post e seguirà una serie di post utili a farvi capire come sfruttare questa libreria all'interno di applicazioni SharePoint 2013 (Apps o Farm solutions che siano).
&lt;br /&gt;In generale, è importante ricordarsi che se volete che l'interfaccia venga modificata in automatico al cambiamento del valore di una proprietà del ViewModel da KnockoutJs è necessario che tale proprietà venga dichiarata come "osservabile" (ko.observable() o ko.observableArray()) e che, una volta che una proprietà è stata segnata come osservabile, va seguita questa sintassi:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;per la lettura: var valore = model.property()&lt;/li&gt;&lt;li&gt;per la scrittura: model.property(‘nuovo valore’);&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;Vi assicuro che vi ci abituerete presto.
&lt;br /&gt;Vi assicuro anche che, se non conoscete per niente o poco JavaScript, vi ci potete divertire tanto e oltretutto acquisite un bagaglio tecnico veramente molto utile di questi tempi.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/KnockoutJs.aspx" title="TAG: KnockoutJs"&gt;KnockoutJs&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WhenSharePointDevsMeetJavaScript.aspx" /><issued>2013-5-21T12:12:10+01:00</issued><modified>2013-5-21T12:12:10+01:00</modified></entry><entry><title>Le slide della mia sessione sulle App allo SharePoint Saturday</title><id>/Blog/SharePointSaturdayItaliaSlideApps.aspx</id><created>2013-5-20T10:46:33+01:00</created><content type="text/html" mode="escaped">Come vi dicevo, sabato scorso c'è stato il primo SharePoint Satuday qui in Italia ed è andata veramente bene.
&lt;br /&gt;E' stata un'ottima occasione per rivedere un sacco di persone e per conoscerne altrettante di nuove, oltre a rimanere aggiornati riguardo le novità di quest'ultima versione di SharePoint.
&lt;br /&gt;
&lt;br /&gt;Vi lascio qui le slide della mia sessione sulle App:
&lt;br /&gt;
&lt;br /&gt;&lt;iframe src="http://www.slideshare.net/slideshow/embed_code/21500825" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="http://www.slideshare.net/PeppeDotNet/apps-for-sharepoint-online-2013" title="Apps for SharePoint Online 2013" target="_blank"&gt;Apps for SharePoint Online 2013&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="http://www.slideshare.net/PeppeDotNet" target="_blank"&gt;Giuseppe Marchi&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Di codice non ne ho, perchè ho usato per lo più il codice presente nei template di default presenti all'interno dei developer tools per Office 2013 e SharePoint 2013 di Visual Studio.
&lt;br /&gt;
&lt;br /&gt;A riguardo, &lt;a href="http://www.sharepoint-reference.com/default.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; mi ha fatto notare un'inesattezza. Cito paro paro quel che mi ha detto (e mi toccherà anche offrigli da bere mi sa).
&lt;br /&gt;Slide 10: le Sandboxed Solutions non sono + deprecate, hanno cambiato il messaggio ad ottobre (rispetto a quanto dichiarato in luglio 2012). Ora sono "sconsigliate" solo le sandboxed solutions code-based, mentre il provisioning di artifact via sandbox è supportato e in molti casi unico modo x fare alcune cose.
&lt;br /&gt;
&lt;br /&gt;Speriamo si riesca ad organizzare anche in altre città questo tipo di eventi. Sarebbe fantastico.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Saturday.aspx" title="TAG: SharePoint Saturday"&gt;SharePoint Saturday&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointSaturdayItaliaSlideApps.aspx" /><issued>2013-5-20T10:46:33+01:00</issued><modified>2013-5-20T10:46:33+01:00</modified></entry><entry><title>SharePoint Saturday anche in Italia! Milano, 18 maggio 2013</title><id>/Blog/SharePointSaturdayItalia.aspx</id><created>2013-5-7T10:8:8+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin: 10px; float: right"&gt;&lt;img src="http://www.peppedotnet.it/images/spsitaly.jpg" alt="SharePoint Daturday Italia" /&gt;&lt;/div&gt;Sabato &lt;b&gt;18 maggio 2013&lt;/b&gt; (quindi tra pochissimo!!), in Via Lepetit 8/10 (Milano, nei pressi della stazione Centrale) si terrà il primo evento della "saga" SharePoint Saturday.
&lt;br /&gt;Questa tipologia di eventi è molto famosa nel resto del mondo, basta andare sul sito e vedere l'elenco dei sabati occupati da incontri di questo tipo nelle varie città: &lt;a href="http://spsevents.org/" title="SPS Events" target="_blank"&gt;http://spsevents.org/&lt;/a&gt;
&lt;br /&gt;Non si tratta nient'altro che di un incontro gratuito per parlare di SharePoint e delle cose che gli girano attorno.
&lt;br /&gt;Ecco, grazie all'iniziativa di qualche volenteroso, questo tipo di evento è sbarcato anche in Italia.
&lt;br /&gt;L'agenda vede argomenti molto interessanti:
&lt;br /&gt;
&lt;br /&gt;8:30 – 9:00
&lt;br /&gt;Registration
&lt;br /&gt;	 	 	 	 
&lt;br /&gt;9:00 – 9:30
&lt;br /&gt;SP Saturday Intro (Casu e Rizzi)
&lt;br /&gt;
&lt;br /&gt;9:30 – 10:30
&lt;br /&gt;Sviluppare App per SharePoint Online 2013 (Marchi)
&lt;br /&gt;
&lt;br /&gt;BREAK	 	 	 	 	 
&lt;br /&gt;
&lt;br /&gt;10:40 – 11:40
&lt;br /&gt;Single Page Applications &amp; SharePoint (Franzini)
&lt;br /&gt;
&lt;br /&gt;11:40 – 12:40
&lt;br /&gt;The power of Windows 8 and SharePoint together (Prota)
&lt;br /&gt;
&lt;br /&gt;LUNCH AND PANNEL	 	 	 	 	 
&lt;br /&gt;
&lt;br /&gt;14:00 – 15:00
&lt;br /&gt;Dal File Server a SharePoint 2013 (Macori)
&lt;br /&gt;
&lt;br /&gt;15:00 – 16:00
&lt;br /&gt;Javascript Patterns (Di Fazio)
&lt;br /&gt;
&lt;br /&gt;BREAK	 
&lt;br /&gt;
&lt;br /&gt;16:10 – 17:10	 	 	 	 
&lt;br /&gt;Passare da un modello di sviluppo tradizionale a quello cloud (Rizzi)
&lt;br /&gt;
&lt;br /&gt;17:10 – 17:30
&lt;br /&gt;Giveaway gifts and high tech gadgets (Casu)
&lt;br /&gt;
&lt;br /&gt;Come vedete, io parlerò per un'oretta di App per SharePoint 2013 (il nuovo modello di sviluppo di cui abbiamo già parlato sul blog) e di come sfruttare questo modello per sviluppare sia sulle vostre strutture che sul cloud, tramite il nuovo Office 365.
&lt;br /&gt;
&lt;br /&gt;Quindi, per prima cosa, potete registrarvi GRATUITAMENTE all'evento qua: 
&lt;br /&gt;- &lt;a href="http://spsitaly-efbevent.eventbrite.it/" title="SharePoint Saturday - Registrazione" target="_blank"&gt;http://spsitaly-efbevent.eventbrite.it/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Il resto delle informazioni invece (agenda, elenco degli speaker e degli sponsor e location), le potete trovare al sito: 
&lt;br /&gt;- &lt;a href="http://spsevents.org/worldwide/Milan/Pages/SPSMilan2013.aspx" title="SharePoint Saturday Milano 2013" target="_blank"&gt;http://spsevents.org/worldwide/Milan/Pages/SPSMilan2013.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ci vediamo la! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Saturday.aspx" title="TAG: SharePoint Saturday"&gt;SharePoint Saturday&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointSaturdayItalia.aspx" /><issued>2013-5-7T10:8:8+01:00</issued><modified>2013-5-7T10:8:8+01:00</modified></entry><entry><title>Filtri multipli utilizzando la querystring $filter del servizio REST di SharePoint 2013</title><id>/Blog/MultipleFiltersWithRESTSP2013.aspx</id><created>2013-5-6T18:33:16+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://www.peppedotnet.it/Blog/FIlterPropertiesWithSharePoint2013REST.aspx" title="Filtrare i risultati con una chiamata REST su SharePoint 2013" target="_blank"&gt;Abbiamo già parlato&lt;/a&gt; della possibilità di effettuare query filtrare utilizzando la nuova interfaccia REST di SharePoint 2013. In quel post però, avevo scritto una stupidata.
&lt;br /&gt;L'applicazione di filtri multipli non avviene specificando più volte la querystring $filter, ma bensì specificando un'unica volta tale querystring ed inserendo le varie condizioni tra parentesi tonde.
&lt;br /&gt;E' solo un errore di sintassi, ma ovviamente questo è l'unico modo di farlo funzionare.
&lt;br /&gt;Ecco un esempio:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=(BaseTemplate eq 101) and (startswith(Title,'Shared'))
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo modo le URL si complicano ancor di più è vero, ma avete così la possibilità di fare filtri in "and" o in "or" inserendo tutte le clausole che volete. Vi assicuro che in applicazioni reali, vi servirà sicuramente.
&lt;br /&gt;Vi ricordo inoltre che se scrivete codice JavaScript, potete utilizzare la mia libreria per aiutarvi a scrivere queste query: 
&lt;br /&gt;- &lt;a href="http://nuget.org/packages/d4s.sp2013.rest" title="SharePoint 2013 REST Helper for JavaScript" target="_blank"&gt;http://nuget.org/packages/d4s.sp2013.rest&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MultipleFiltersWithRESTSP2013.aspx" /><issued>2013-5-6T18:33:16+01:00</issued><modified>2013-5-6T18:33:16+01:00</modified></entry><entry><title>Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013</title><id>/Blog/HowToEnableFilterByQuerystringInSP2013.aspx</id><created>2013-5-2T14:44:33+01:00</created><content type="text/html" mode="escaped">Per chi di voi ha già installato la nuova versione del prodotto, provate ad eseguire queste operazioni:
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create una nuova lista semplice (io l'ho chiamata "Categorie") e metteteci dentro 3 elementi&lt;/li&gt;&lt;li&gt;Create una seconda nuova lista semplice (io l'ho chiamata "Fatture"), create un nuovo campo lookup sulla lista appena creata (la lista "Categorie") ed inserite qualche elemento dentro questa lista, specificando sempre un valore nel campo di lookup&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Ok, provate ora a filtrare la lista di fatture inserendo nella URL le seguenti querystring:
&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;/Lists/Fatture/AllItems.aspx?FilterField1=Categoria&amp;FilterValue1=Due&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove "Categoria" è il nome del campo lookup che avete creato prima e "Due" uno dei valori possibili da attribuire a quel campo.
&lt;br /&gt;Quello che succede è che SharePoint filtra la lista al caricamento della pagina in base al contenuto della querystring. Questa funzionalità è così da un sacco di versioni addietro e molto spesso risulta veramente utile, anche all'interno di applicazioni custom.
&lt;br /&gt;Inoltre, la stessa funzionalità è utilizzata anche dalla "QueryString Filter Web Part".
&lt;br /&gt;Se però provate a cambiare filtro o resettarlo, vi accorgerete che tali operazioni non sono più disponibili. Cioè non funzionano proprio.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/serversiderendering_01.png" alt="Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere dall'immagine, nonostante io abbia tolto il filtro continuo a vedere solamente gli elementi filtrati inizialmente.
&lt;br /&gt;Questo perché le web part di lista (rappresentate dalla web part XsltListViewWebPart) in SharePoint 2013 sono state modificate per renderizzare le liste in maniera differente, inserendo nel giro anche molto rendering JavaScript. Questa funzionalità (di cui parleremo in uno dei prossimi post) ci permette grandi spazi di customizzazione, perché con JavaScript abbiamo sicuramente più potenza che con XSLT (per esempio), ma non permette più l'utilizzo del filtro via querystring che magari utilizziamo per alcune delle applicazioni che stiamo portando da SharePoint 2010 a SharePoint 2013.
&lt;br /&gt;Per fortuna però, c?è modo di tornare indietro. Tornare cioè al funzionamento che avevamo in SharePoint 2010, modificando le proprietà dalla web part e flaggando l'opzione "Server Render" presente all'interno della categoria "Miscellaneous".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/serversiderendering_02.png" alt="Come far funzionare i filtri sulle liste tramite URL in SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;In questo modo il filtro via querystring continuerà a funzionare come ha sempre fatto.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToEnableFilterByQuerystringInSP2013.aspx" /><issued>2013-5-2T14:44:33+01:00</issued><modified>2013-5-2T14:44:33+01:00</modified></entry><entry><title>Creare servizi REST su SharePoint 2010</title><id>/Blog/HowToImplementRESTServicesInSharePoint2010.aspx</id><created>2013-4-22T16:5:1+01:00</created><content type="text/html" mode="escaped">Durante questi periodi stiamo imparando a conoscere la nuova interfaccia REST di SharePoint 2013. Questa interfaccia è una figata perchè permette di sfruttare gli standard del momento, in ambito di sviluppo web, per la scrittura delle vostre applicazioni. 
&lt;br /&gt;Applicazioni che vedono un utilizzo molto più accentuato di JavaScript, rispetto a quanto si aveva prima. 
&lt;br /&gt;Perchè JavaScript? Perchè lo impone il mercato attuale. Applicazioni con una forte user experience ed un utilizzo di tecnologie client-side ben distribuito sono sicuramente di impatto per l'utente finale e pensare di poter affiancare a queste tecnologie una base server-side orientata ai servizi, molto solida e basata su standard come JSON, ecc.. è sicuramente rassicurante.
&lt;br /&gt;Benissimo. Il problema è che in questo momento storico, soprattutto qui in Italia, noi "SharePointiani" è come se fossimo sotto attacco. Si perchè dobbiamo avere a che fare con molti clienti che usano ancora MOSS 2007, la maggior parte che sono ben consolidati su SharePoint 2010 e qualche avventuriero che sta iniziando ad utilizzare 2013, il che ci mette in forte difficoltà durante lo sviluppo delle nostre applicazioni. Questo perchè non tutte le tecnologie e le librerie che possiamo sfruttare in questi periodi sono compatibili con software di "vecchia generazione".
&lt;br /&gt;Ecco quindi che, se dobbiamo pensare ad un'applicazione su SharePoint 2010 (su MOSS 2007 ci ho messo una pietra sopra ormai), per prima cosa è molto importante che la pensiamo in ottica di una futura migrazione. 
&lt;br /&gt;Poi, è altrettanto importante che cerchiamo di svilupparla seguendo lo standard del momento, lo standard che si aspettano gli utenti ora, cioè quello di applicazioni molto responsive, di facile utilizzo, che guidano l'utente all'obbiettivo e con un certo appeal grafico e funzionale.
&lt;br /&gt;In parole povere, è necessario pensare l'applicazione con una buona dose di sviluppo di front-end ed una solida architettura a servizi.
&lt;br /&gt;Se vi ricordate, SharePoint ha sempre esposto molte delle sue funzionalità tramite servizi, ma l'utilizzo di tecnologie attuali come REST per le richieste e JSON per la rappresentazione del dato è stato applicato solamente per un singolo servizio (il ListData.svc), che però ci dava solo la possibilità di fare operazioni sulle liste. Carino eh, però limitante.
&lt;br /&gt;Vediamo invece come possiamo scrivere dei servizi personalizzati, in grado di rispondere a chiamate REST e di ritornare i dati nel formato che si ormai presentato come uno dei più vincenti: JSON.
&lt;br /&gt;
&lt;br /&gt;Per prima cosa è necessario aprire Visual Studio 2010 e creare un nuovo progetto SharePoint 2010.
&lt;br /&gt;Fatto questo, aggiungete alla vostra soluzione una nuova "mapped folder" e selezionate la cartella "ISAPI", che sarà la cartella che conterrà i nostri servizi. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_1.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Perchè la cartella ISAPI? Perchè è la cartella che SharePoint stesso utilizza per i suoi web services e perchè contiene la configurazione (tramite un web.config specifico) per implementare nuovi servizi SOAP o REST.
&lt;br /&gt;Fatto questo, dobbiamo aggiungere la referenza alla libreria Microsoft.SharePoint.Client.ServerRuntime.dll; questa libreria si trova solo in GAC (una volta che avete installato SharePoint ovviamente) e contiene le strutture utili alla creazione del nostro servizio custom.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_2.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Queste libreria le inseriamo solamente perchè ci danno la possibilità di decorare un nostro servizio con un attributo che fa capire a SharePoint di generare anche l'endpoint "MEX" utile allo scambio dei metadati del servizio.
&lt;br /&gt;Oltre a tale libreria dobbiamo aggiungere le varie referenze per l'utilizzo di servizi WCF (quindi per esempio la System.ServiceModel, la System.ServiceModel.Web e la System.Runtime.Serialization).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_3.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Benissimo. Passiamo ora alla creazione del servizio. 
&lt;br /&gt;Ogni servizio WCF deve vedere la presenza di un endpoint (che può essere una URI dinamica o un file .svc) e di un contratto utile a definire quali sono i metodi esposti dal servizio stesso. Per chi di voi già lavora con WCF, queste nozioni dovrebbero essere superflue.
&lt;br /&gt;All'interno di una soluzione SharePoint 2010, l'endpoint del nostro servizio personalizzato sarà un file .svc che dovrete create all'interno della cartella "ISAPI". Questo file deve contenere la seguente dichiarazione:
&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;%@&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ServiceHost Language&lt;span style='color:#0000FF'&gt;="C#"&lt;/span&gt; 
&lt;br /&gt;                Factory&lt;span style='color:#0000FF'&gt;="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, 
&lt;br /&gt;                Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"&lt;/span&gt;
&lt;br /&gt;                Service&lt;span style='color:#0000FF'&gt;="D4S.SP2010.RestService.Services.SampleRESTService, 
&lt;br /&gt;                D4S.SP2010.RestService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=05336b2be73eec53"&lt;/span&gt; %&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;I punti importanti della dichiarazione del servizio appena vista sono:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;L'attributo "Service", che rappresenta la classe concreta del nostro servizio&lt;/li&gt;&lt;li&gt;L'attributo "Factory", che rappresenta la classe factory presente all'interno delle librerie del Server Object Model di SharePoint 2010 e che stabilisce quale tipo di binding SharePoint dovrà applicare al nostro servizio. Nel nostro caso, viene scelta la classe MultipleBaseAddressWebServiceHostFactory che è la classe che ci permette di creare il servizio in modalità REST, al posto di utilizzare SOAP o di creare un servizio ADO.NET Data Service.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Riguardo il secondo punto, vi ricordo che i servizi WCF cambiano comportamento (e talvolta anche protocollo) in base alla configurazione (binding) presente all'interno del web.config dell'applicazione web che funge da host per il servizio.
&lt;br /&gt;SharePoint offre un pò di factory di default, in grado di permetterci di creare dei servizi in maniera dinamica (quindi senza darne una vera e propria definizione all'interno del web.config), che sono disponibili a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff521586(v=office.14).aspx" title="WCF Services in SharePoint Foundation 2010" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ff521586(v=office.14).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Creato l'endpoint, dobbiamo specificare il contratto del nostro servizio. Il contratto è solitamente dato dall'utilizzo di un'interfaccia (anche se non è obbligatorio ovviamente), a cui assegnare l'attributo "ServiceContract" e di una serie di metodi, che saranno poi quelli esposti dal servizio, decorati invece con  l’attributo "OperationContract".
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Services
&lt;br /&gt;{
&lt;br /&gt;    [ServiceContract]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;interface&lt;/span&gt; ISampleRESTService
&lt;br /&gt;    {
&lt;br /&gt;        [WebGet(UriTemplate=&lt;span style="color: #A31515"&gt;"list"&lt;/span&gt;, BodyStyle=WebMessageBodyStyle.Bare, ResponseFormat=WebMessageFormat.Json)]
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        List&lt;SampleDto&gt; ReturnAListOfSomething();
&lt;br /&gt;
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        [WebGet(UriTemplate=&lt;span style="color: #A31515"&gt;"list/?id={id}"&lt;/span&gt;, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
&lt;br /&gt;        SampleDto GetSomethingById(&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; id);
&lt;br /&gt;
&lt;br /&gt;        [OperationContract]
&lt;br /&gt;        [WebGet(UriTemplate = &lt;span style="color: #A31515"&gt;"list/{id}"&lt;/span&gt;, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
&lt;br /&gt;        SampleDto GetSomethingElseById(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; id);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come avete visto, su ogni metodo esposto abbiamo la possibilità di specificare:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il template della URL utilizzata per chiamare tale metodo (tramite l'attributo UriTemplate)&lt;/li&gt;&lt;li&gt;Il tipo di messaggio&lt;/li&gt;&lt;li&gt;Il formato della risposta (assieme a quella della richiesta, che in questo esempio ho omesso)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;A tale interfaccia dobbiamo poi legare un'implementazione concreta. La classe che conterrà tale implementazione sarà la stessa che abbiamo definito all'interno dell'endpoint.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Services
&lt;br /&gt;{
&lt;br /&gt;    [BasicHttpBindingServiceMetadataExchangeEndpoint]
&lt;br /&gt;    [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; SampleRESTService : ISampleRESTService
&lt;br /&gt;    {
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; List&lt;SampleDto&gt; ReturnAListOfSomething()
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData();
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; SampleDto GetSomethingById(&lt;span style="color: #0000FF"&gt;int&lt;/span&gt; id)
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData().Where(s =&gt; s.SampleIntProperty == id).FirstOrDefault();
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; SampleDto GetSomethingElseById(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; id)
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;int&lt;/span&gt; requestedId = 0;
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (Int32.TryParse(id, &lt;span style="color: #0000FF"&gt;out&lt;/span&gt; requestedId))
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; SampleData().Where(s =&gt; s.SampleIntProperty == requestedId).FirstOrDefault();
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;else&lt;/span&gt;
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;private&lt;/span&gt; List&lt;SampleDto&gt; SampleData() 
&lt;br /&gt;        {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;return&lt;/span&gt; &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; List&lt;SampleDto&gt;() 
&lt;br /&gt;            { 
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 0, SampleStringProperty = &lt;span style="color: #A31515"&gt;"zero"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 1, SampleStringProperty = &lt;span style="color: #A31515"&gt;"uno"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 2, SampleStringProperty = &lt;span style="color: #A31515"&gt;"due"&lt;/span&gt; },
&lt;br /&gt;                &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SampleDto() { SampleIntProperty = 3, SampleStringProperty = &lt;span style="color: #A31515"&gt;"tre"&lt;/span&gt; },
&lt;br /&gt;            };
&lt;br /&gt;        }        
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ovviamente l'implementazione è solo d'esempio. Quello a cui dovete far caso è l'utilizzo dell'attributo BasicHttpBindingServiceMetadataExchangeEndpoint, per permettere la creazione dinamica dell'endpoint /mex utile allo scambio dei metadati del nostro servizio.
&lt;br /&gt;
&lt;br /&gt;Ok, ci siamo quasi.
&lt;br /&gt;Come avete visto, i metodi esposti dal nostro servizio ritornano sia dei tipi di dati base (void, string, int, ecc..) sia dei tipi di dati custom (nell'esempio, il tipo "SampleDto"). Quello che dovete ricordarvi di fare, che chi di voi usa WCF sa bene, è di decorare la classe e le proprietà che abbiamo intenzione di utilizzare all'interno del nostro servizio con gli attributi "DataContract" e "DataMember".
&lt;br /&gt;Questi due attributi fanno in modo che il framework di WCF riesca a serializzare i dati che escono dal nostro servizio (nel nostro caso in JSON) e deserializzare quelli che arrivano in entrata.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; D4S.SP2010.RestService.Dto
&lt;br /&gt;{
&lt;br /&gt;    [DataContract]
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;class&lt;/span&gt; SampleDto
&lt;br /&gt;    {
&lt;br /&gt;        [DataMember]
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;string&lt;/span&gt; SampleStringProperty { get; set; }
&lt;br /&gt;
&lt;br /&gt;        [DataMember]
&lt;br /&gt;        &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;int&lt;/span&gt; SampleIntProperty { get; set; }
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Benissimo. Ora possiamo fare deploy della nostra soluzione su SharePoint 2010.
&lt;br /&gt;Per testarla ci basta semplicemente aprire il browser, andare all’indirizzo:
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_4.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;e chiamare uno dei metodi esposti:
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc/list
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_5.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;http://vostrositosharepoint/_vti_bin/D4S/SampleRESTService.svc/list/2
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/restSP2010_6.jpg" alt="Creare servizi REST su SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ecco pronto il vostro servizio REST, che vi torna dati in formato JSON da utilizzare all’interno della parte di front-end delle vostre applicazioni.
&lt;br /&gt;Vi lascio qua i sorgenti, così potete provarlo direttamente:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/D4S.SP2010.RestService.zip" title="Scarica i sorgenti" target="_blank"&gt;D4S.SP2010.RestService.zip&lt;/a&gt; (50 Kb)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WCF.aspx" title="TAG: WCF"&gt;WCF&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToImplementRESTServicesInSharePoint2010.aspx" /><issued>2013-4-22T16:5:1+01:00</issued><modified>2013-4-22T16:5:1+01:00</modified></entry><entry><title>Scaricare un WSP gi&#224; installato sulla vostra farm SharePoint</title><id>/Blog/HowToDownloadAWSPFromTheFarm.aspx</id><created>2013-4-13T17:30:9+01:00</created><content type="text/html" mode="escaped">L'altro giorno mi è capitato di arrivare in una farm SharePoint e trovare un'applicazione di cui non erano disponibili i sorgenti. Si lo so.. una bella seccatura :)
&lt;br /&gt;Oltre a Reflector o JustDecompile, tool utilissimi per dare un'occhiata all'interno dei vari assembly, dovevo prima recuperare il WSP dal config db di SharePoint.
&lt;br /&gt;Per fortuna il modello ad oggetti del prodotto ci mette a disposizione classi e metodi per selezionare la solution di cui abbiamo bisogno e "scaricarla" sul file system.
&lt;br /&gt;Vi lascio qua le 3 righe di codice che vanno utilizzate:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$farm = Get-SPFarm
&lt;br /&gt;$file = $farm.Solutions.Item(&lt;span style="color: #A31515"&gt;"NOME_VOSTRA_SOLUTION.wsp.wsp"&lt;/span&gt;).SolutionFile
&lt;br /&gt;$file.SaveAs(&lt;span style="color: #A31515"&gt;"c:\NOME_VOSTRA_SOLUTION.wsp"&lt;/span&gt;)&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Molto utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDownloadAWSPFromTheFarm.aspx" /><issued>2013-4-13T17:30:9+01:00</issued><modified>2013-4-13T17:30:9+01:00</modified></entry><entry><title>Come chiamare un endpoint remoto da un App SharePoint 2013</title><id>/Blog/HowToCallRemoteEndpointsFromSP2013Apps.aspx</id><created>2013-4-2T9:42:30+01:00</created><content type="text/html" mode="escaped">Come &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx" title="SharePoint 2013 Apps URL" target="_blank"&gt;abbiamo detto&lt;/a&gt;, il modello App-oriented inserito all'interno di questa nuova versione di SharePoint, è stato pensato in modo tale da girare in un contesto isolato (attraverso l'utilizzo di un nuovo dominio).
&lt;br /&gt;Questo fa si che tutte le chiamate HTTP fatte a risorse esterne al contesto dell'App, tramite Javascript, siano in effetti delle chiamate cross-site. Le chiamate cross-site di questo tipo sono espressamente vietate, proprio nel senso che è il browser stesso a bloccarvele.
&lt;br /&gt;Ovviamente, se facciamo richieste di questo tipo da una Provider-Hosted App o da una Auto-Hosted App, sfruttando quindi .NET e la parte di code-behind delle nostre pagine, non abbiamo questo problema.
&lt;br /&gt;Il problema viene fuori, come vi dicevo, quando si effettuano queste chiamate dalla parte front-end della nostra applicazione (quindi dal codice Javascript che decidiamo di scrivere).
&lt;br /&gt;SharePoint ha però una soluzione per questo, che è quella di fare per noi la chiamata cross-site.
&lt;br /&gt;Che significa "fare per noi"?
&lt;br /&gt;Significa che attraverso due particolari classi Javascript (la classe SP.WebRequestInfo e la classe SP.WebProxy) abbiamo la possibilità di passare a SharePoint l'endpoint remoto che vogliamo chiamare (sfruttando quindi una chiamata al servizio Client.svc nello stesso dominio dell'App ed evitando la chiamata cross-site) e farci ritornare il risultato nel formato richiesto.
&lt;br /&gt;Il codice per la chiamata è veramente semplice:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;'use strict';
&lt;br /&gt;
&lt;br /&gt;window.D4S = window.D4S || {};
&lt;br /&gt;window.D4S.RssReader = window.D4S.RssReader || {};
&lt;br /&gt;
&lt;br /&gt;D4S.RssReader.RssFeedViewModel = function () {
&lt;br /&gt;    var self = &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    self.feedItems = ko.observableArray([]);
&lt;br /&gt;
&lt;br /&gt;    self.loadFeed = function () {
&lt;br /&gt;
&lt;br /&gt;        &lt;span style="color: #008200"&gt;//wrong method, because throws a cross-domain exception!        &lt;/span&gt;
        &lt;span style="color: #008200"&gt;//$.ajax({&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    url: 'http://www.peppedotnet.it/Rss.aspx',&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    type: 'GET',            &lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    success: function (data) {&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//        //we can't go here&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    },&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    error: function (jqXHR, textStatus, errorThrown) {&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//    }&lt;/span&gt;
        &lt;span style="color: #008200"&gt;//});        &lt;/span&gt;

&lt;br /&gt;        &lt;span style="color: #008200"&gt;//right method, using SharePoint WebRequestInfo&lt;/span&gt;
        var context = SP.ClientContext.get_current();
&lt;br /&gt;        var request = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SP.WebRequestInfo();
&lt;br /&gt;        request.set_url('http:&lt;span style="color: #008200"&gt;//www.peppedotnet.it/Rss.aspx');&lt;/span&gt;
        request.set_method(&lt;span style="color: #A31515"&gt;"GET"&lt;/span&gt;);
&lt;br /&gt;        var response = SP.WebProxy.invoke(context, request); &lt;span style="color: #008200"&gt;//SharePoint makes the cross-domain call for you!&lt;/span&gt;
        context.executeQueryAsync(function () {
&lt;br /&gt;            &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (response.get_statusCode() == 200) {
&lt;br /&gt;                var rss = response.get_body();
&lt;br /&gt;                var items = $(rss).find('item');
&lt;br /&gt;                $.each(items, function (index, item) {
&lt;br /&gt;                    self.feedItems.push({
&lt;br /&gt;                        Id: $(item).find('guid').text(),
&lt;br /&gt;                        Title: $(item).find('title').text(),
&lt;br /&gt;                        Url: 'http:&lt;span style="color: #008200"&gt;//www.peppedotnet.it' + $(item).find('guid').text(),&lt;/span&gt;
                        Category: $(item).find('category').text(),
&lt;br /&gt;                        Body: $(item).find('description').text()
&lt;br /&gt;                    });
&lt;br /&gt;                });
&lt;br /&gt;            }
&lt;br /&gt;        }, function (sender, args) {
&lt;br /&gt;            alert('error');
&lt;br /&gt;        });
&lt;br /&gt;    };
&lt;br /&gt;};
&lt;br /&gt;
&lt;br /&gt;$(document).ready(function () {
&lt;br /&gt;    var model = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; D4S.RssReader.RssFeedViewModel();
&lt;br /&gt;    ko.applyBindings(model);
&lt;br /&gt;
&lt;br /&gt;    model.loadFeed();
&lt;br /&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ho utilizzato KnockoutJs per fare questo esempio. Non è niente di complicato, ma vi rimando cmq al sito ufficiale di questa libreria perchè è veramente utile: &lt;a href="http://knockoutjs.com" title="KnockoutJs" target="_blank"&gt;http://knockoutjs.com&lt;/a&gt;.
&lt;br /&gt;Come potete vedere, le due classi utili ad effettuare la chiamata all'endpoint remoto fanno parte del Client Object Model di SharePoint 2013 e quindi seguono le sue stesse regole e la sua sintassi. Infatti, se guardiamo la chiamata che viene fatta con uno sniffer qualsiasi, vediamo che viene chiamato il servizio Client.svc e che gli vengono passati dei dati in formato XML, all'interno dei quali riconosciamo la nostra URL remota che abbiamo detto a SharePoint di chiamare per noi.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/SP2013/remoteEndpoints2.png" title="Come chiamare un endpoint remoto da un App SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/SP2013/remoteEndpoints2s.png" alt="Come chiamare un endpoint remoto da un App SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'unica cosa che dobbiamo ricordarci di fare è quella di inserire all'interno dell'AppManifest.xml della nostra App, l'endpoint remoto che la stessa App richiama per il suo corretto funzionamento. Questo lo possiamo fare utilizzando l'editor che Visual Studio 2012 ci mette a disposizione (una volta installati i tool per lo sviluppo di applicazioni per SharePoint 2013).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/SP2013/remoteEndpoints.png" alt="Come chiamare un endpoint remoto da un App SharePoint 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, una volta che l'utente ha acconsentito al fatto che la nostra App effettua delle chiamate ad endpoint remoti, SharePoint è in grado di effettuare la chiamata in tutta tranquillità.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCallRemoteEndpointsFromSP2013Apps.aspx" /><issued>2013-4-2T9:42:30+01:00</issued><modified>2013-4-2T9:42:30+01:00</modified></entry><entry><title>Utilizzare le finestre Callout di SharePoint 2013</title><id>/Blog/HowToUseCalloutsSharePoint2013.aspx</id><created>2013-3-15T18:31:2+01:00</created><content type="text/html" mode="escaped">Come avrete visto, l'interfaccia di SharePoint 2013 è davvero cambiata rispetto a prima. 
&lt;br /&gt;Assieme ai cambiamenti stilistici, abbiamo anche un nuovo elemento di interazione all'interno delle pagine (sfruttato soprattutto in liste e document library): le Callout.
&lt;br /&gt;Che cosa sono? Non sono nient'altro che dei tooltip un pò più fighi dal punto di vista grafico, che ci permettono di fare operazioni contestuali all'oggetto che è stato cliccato.
&lt;br /&gt;In SharePoint 2013 questi oggetti hanno sostituito l'edit control block di elementi di liste o di file di document library, dando la possibilità di fare azioni veloci sull'oggetto selezionato o per esempio (questo solo se avete installato le Office Web Apps) avere la preview del file. In realtà l'edit control block è sempre presente, ma viene renderizzato come azione all'interno di una Callout.
&lt;br /&gt;Bene, a fronte della presenza di questo nuovo componente, il popolo di sviluppatori SharePoint deve sapere che è possibile sfruttare delle API Javascript ed utilizzare le medesime Callout anche all'interno delle nostre customizzazioni.
&lt;br /&gt;Queste API sono presenti all'interno del file callout.js (o callout.debug.js), disponibile all'interno della directory LAYOUTS. 
&lt;br /&gt;Questo file è inserito nella master page di default di SharePoint 2013, mentre invece va inserito a mano all'interno delle pagine delle vostre App se, appunto, volete utilizzare questo nuovo componente all'interno di un'App SharePoint 2013.
&lt;br /&gt;L'utilizzo è davvero semplice, ecco un esempio si base:
&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;script&lt;/span&gt;&lt;span style='color:#FF0000'&gt; type&lt;span style='color:#0000FF'&gt;="text/javascript"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;function OpenTestCallout(sender) {
&lt;br /&gt;   var c = CalloutManager.createNew({ 
&lt;br /&gt;      ID: 'myCalloutId',
&lt;br /&gt;      launchPoint: sender, 
&lt;br /&gt;      beakOrientation: 'leftRight', 
&lt;br /&gt;      title: 'Titolo', 
&lt;br /&gt;      content: 'Contenuto', 
&lt;br /&gt;      contentWidth: 600 
&lt;br /&gt;   });
&lt;br /&gt;   c.open();
&lt;br /&gt;}
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;script&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;a&lt;/span&gt;&lt;span style='color:#FF0000'&gt; href&lt;span style='color:#0000FF'&gt;="#"&lt;/span&gt; onClick&lt;span style='color:#0000FF'&gt;="OpenTestCallout(this)"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;open callout&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;a&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come vedete, gira tutto intorno al metodo createNew della classe CalloutManager, classe che ci permette di fare tante altre operazioni su questa tipologia di componente. 
&lt;br /&gt;I parametri principali di questo metodo sono sicuramente:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ID - Identificativo della Callout, obbligatorio ed utile per recuperare univocamente la Callout nella pagina&lt;/li&gt;&lt;li&gt;launchPoint - Elemento HTML dalla cui posizione deve essere visualizzato la Callout graficamente&lt;/li&gt;&lt;li&gt;beakOrientation - Enumerazione per decidere l'orientamento grafico della Callout (i possibili valori sono "topBottom" o "leftRight")&lt;/li&gt;&lt;li&gt;title - Titolo della Callout&lt;/li&gt;&lt;li&gt;content - Contenuto della Callout (che può essere anche in formato HTML)&lt;/li&gt;&lt;/ul&gt;Oltre a queste opzioni, abbiamo la possibilità di aggiungere azioni specifiche direttamente all'interno della Callout.
&lt;br /&gt;Vedremo questo esempio in uno dei prossimi post.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Callout.aspx" title="TAG: Callout"&gt;Callout&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToUseCalloutsSharePoint2013.aspx" /><issued>2013-3-15T18:31:2+01:00</issued><modified>2013-3-15T18:31:2+01:00</modified></entry><entry><title>Disponibile per il download la versione ufficiale dei tool di sviluppo per Office e SharePoint 2013</title><id>/Blog/RTMForOffice2013AndSharePoint2013Tools.aspx</id><created>2013-3-7T17:28:56+01:00</created><content type="text/html" mode="escaped">Da qualche giorno (finalmente direi), è disponibile per il download la versione ufficiale dei tool per Visual Studio 2012 per quanto riguarda lo sviluppo di applicazioni Office 2013 e SharePoint 2013.
&lt;br /&gt;Questo download, sostituisce la preview 2 che ci avevano fatto scaricare un pò di tempo fa e che non copriva ancora a pieno le funzionalità che invece si possono sfruttare durante lo sviluppo di applicazioni secondo il nuovo "app-model" di Office e SharePoint.
&lt;br /&gt;L'annuncio viene direttamente dal blog di &lt;a href="http://blogs.msdn.com/b/somasegar/archive/2013/03/04/now-available-office-developer-tools-for-visual-studio-2012.aspx" title="Somasegar" target="_blank"&gt;Somasegar&lt;/a&gt;, ma trovate informazioni anche su &lt;a href="http://dev.office.com" target="_blank" title="dev.office.com"&gt;dev.office.com&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Con questa nuova versione dei tool, abbiamo innanzitutto una pre-validazione di quello che abbiamo prodotto secondo le linee guida dell'Office Store. Questo per aiutarvi durante lo sviluppo ed evitare tempi lunghissimi per la validazione delle vostre App da inserire all'interno dell'Office Store.
&lt;br /&gt;Inoltre, sono stati aggiunti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;delle modifiche all'editor dei file Manifest.xml delle nostre applicazioni&lt;/li&gt;&lt;li&gt;maggiori help e best practices all'interno dei template di elemento o di progetto, per aiutarci nello sviluppo&lt;/li&gt;&lt;li&gt;debug remoto sui remote event receiver e sugli eventi relativi alle App&lt;/li&gt;supporto alla configurazione e alla creazione di workflow&lt;/li&gt;&lt;li&gt;... e tanto altro ancora!&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Io ancora non gli ho installati, ma prometto di farlo presto perchè voglio vedere se hanno modificato qualcosa per quanto riguarda la localizzazione delle App per SharePoint (visto che attualmente è un massacro). Vi terrò aggiornati.
&lt;br /&gt;
&lt;br /&gt;In questi giorni, alla SharePoint Conference, siamo andati nel dettaglio di questo nuovo modello. Se non ci sono grossi cambiamenti, ne riparlaremo (ma solo per quanto riguarda Office 2013) al &lt;a href="http://www.dotnetcampus.it/" title=".NET Campus 2013" target="_blank"&gt;.NET Campus&lt;/a&gt;, il 13 Aprile 2013 a Roma.
&lt;br /&gt;
&lt;br /&gt;Bene quindi, trovate i tool a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-US/office/apps/fp123627" title="Downdload office 2013 e sharepoint 2013 tools for VS12" target="_blank"&gt;http://msdn.microsoft.com/en-US/office/apps/fp123627&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download e buono sviluppo! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/RTMForOffice2013AndSharePoint2013Tools.aspx" /><issued>2013-3-7T17:28:56+01:00</issued><modified>2013-3-7T17:28:56+01:00</modified></entry><entry><title>Office 365 Developer Subscription per abbonati MSDN</title><id>/Blog/Office365DeveloperSubscription.aspx</id><created>2013-3-2T14:17:45+01:00</created><content type="text/html" mode="escaped">Da ieri, per tutti gli abbondati MSDN, è disponibile una nuova sottoscrizione per Office 365 fatta apposta per sviluppare App per SharePoint 2013 ed Office 2013.
&lt;br /&gt;Questo significa che è assieme a tutto il resto delle licenze Microsoft per sviluppo, abbiamo anche a disposizione:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un Sito per sviluppatori di SharePoint Online, personalizzato per la creazione e il testing delle app.&lt;/li&gt;&lt;li&gt;l'accesso agli Strumenti di sviluppo  (Napa, per intenderci)&lt;/li&gt;&lt;li&gt;un account Microsoft Seller Dashboard, per mettere sull'Office Store le vostre App&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Sostanzialmente, è stato inserito all'interno della sottoscrizione MSDN quello che abbiamo potuto provare in questi mesi di beta del nuovo Office 365: un sito SharePoint 2013, di tipo "Developer Site".
&lt;br /&gt;Assieme a questo sito, è disponibile anche una casella di posta Exchange Online per domini del tipo VOSTRONOME.onmicrosoft.com, così da darvi la possibilità di implementare le "Mail-App" di Office 2013.
&lt;br /&gt;
&lt;br /&gt;Ora che anche Office 365 andrà in RTM, ci manca solo la versione ufficiale dei tool per Visual Studio 2012 e abbiamo così tutti i tool ufficiali per implementare le nostre App.
&lt;br /&gt;
&lt;br /&gt;Per chi è interessato, vi ricordo che mercoledì 6 marzo 2013 ci sarà l'evento di lancio del nuovo Office 365 presso la SharePoint Conference italiana (Assago, Centro Congressi Milano Fiori).
&lt;br /&gt;L'evento di lancio sarà aperto a tutti (accesso gratuito quindi). Trovate maggiori info a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/events/2013/office365-launch.aspx" title="Office 365 launch event in Italy" target="_blank"&gt;http://www.sharepointconference.it/events/2013/office365-launch.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/header_office365.gif" alt="SharePoint Conference 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ci vediamo là!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Office365DeveloperSubscription.aspx" /><issued>2013-3-2T14:17:45+01:00</issued><modified>2013-3-2T14:17:45+01:00</modified></entry><entry><title>Errore su App SharePoint 2013: &quot;Access denied. You do not have permission to ...&quot;</title><id>/Blog/AccessDeniedErrorOnSharePoint2013App.aspx</id><created>2013-2-19T17:38:51+01:00</created><content type="text/html" mode="escaped">Se vi approcciate per la prima volta allo sviluppo di App per SharePoint 2013, assieme all'utilizzo della nuova interfaccia REST, è molto probabile che incontrerete questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: red; font-style: italic; margin-left: 10px"&gt;Access denied. You do not have permission to perform this action or access this resource.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;durante una delle vostre chiamate REST alle informazioni dell'host site.
&lt;br /&gt;Niente paura, vi siete solo dimenticati di inserire i permessi per la vostra App o, ancor più semplicemente, vi siete dimenticati di approvare la vostra App una volta che l'avete installata.
&lt;br /&gt;Come dicevamo nei primi post sul nuovo App Model di SharePoint 2013, ogni App può richiedere dei permessi per accedere al sito padre in cui viene installata (il famoso "Host Site"). Questa richiesta fa parte dell'App Manifest stesso.
&lt;br /&gt;Quindi per ovviare al problema capite bene su che risorse avete bisogno di avere permessi e modificate il vostro AppManifest.xml di modo tale che possa chiederli a SharePoint.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/appManifestPermissions.jpg" alt="AppManifest.xml permissions" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se avete già dato i permessi alla vostra App, basta solo rieseguire l'autorizzazione dalle pagine del sito Host.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/appPermissions.jpg" alt="App authorization" /&gt;
&lt;br /&gt;
&lt;br /&gt;I permessi che potete legare alla vostra App e che trovate disponibili in quella combo all'interno dell'AppManifest.xml sono piuttosto esplicativi, quindi non dovreste aver problemi ;)
&lt;br /&gt;
&lt;br /&gt;Se non vi siete mai avvicinati a questo nuovo modello o magari all'utilizzo della nuova interfaccia REST, vi lascio qua un pò di riferimenti:
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Guides/SharePoint%202013.aspx" title="Guida a SharePoint 2013" target="_blank"&gt;http://www.peppedotnet.it/Guides/SharePoint%202013.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo invece che se volete un'introduzione molto più in dettaglio del nuovo modello orientato alle App, tengo ben due sessioni a riguardo durante la &lt;a href="" title="" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; di quest'anno (5, 6 e 7 marzo 2013, al Centro Congressi MilanoFiori di Assago - Milano).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="/Images/spoc13_Leaderboard.png" alt="SharePoint Conference 2013" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AccessDeniedErrorOnSharePoint2013App.aspx" /><issued>2013-2-19T17:38:51+01:00</issued><modified>2013-2-19T17:38:51+01:00</modified></entry><entry><title>Aggiornata la versione del policies di validazione delle app SharePoint e Office per l'Office Store</title><id>/Blog/OfficeStoreValidationPolicies13.aspx</id><created>2013-2-13T11:4:15+01:00</created><content type="text/html" mode="escaped">E' appena stata aggiornata la lista delle policies di validazione che il team dell'Office Store applica durante il flusso di approvazione delle App che vogliono approdare sul mercato.
&lt;br /&gt;Tale lista è disponibile a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx" title="Validation policies for the apps submitted to the Office Store (version 1.3)" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' importante tenere sempre sott'occhio questa lista se abbiamo intenzione di mandare una delle nostre App (sia SharePoint 2013 che Office 2013) al flusso di validazione proprio dell'Office Store.
&lt;br /&gt;A breve vedremo quali sono i passi per proporre la vostra App all'interno dello Store, ma iniziare a leggersi per bene le regole di validazione non può farvi che bene, perchè sono veramente tante.
&lt;br /&gt;Qual'è il rischio di evitare questo documento? Molto semplice: tempi di attivazione della vostra App eterni.
&lt;br /&gt;Io l'ho provato sulla mia pelle. 
&lt;br /&gt;Quando ho mandato la mia prima App (&lt;a href="http://office.microsoft.com/en-us/store/my-rubrica-WA103938579.aspx" title="My Rubrica - Office Store" target="_blank"&gt;http://office.microsoft.com/en-us/store/my-rubrica-WA103938579.aspx&lt;/a&gt;), il documento era appena stato pubblicato, quindi non gli ho dato troppo peso lo ammetto, ma vi assicuro che ci ho messo almeno 2 settimane per avere l'App pubblicata nello store, a forza di rifiuti e modifiche rispettando quanto richiesto dalle policies di validazione.
&lt;br /&gt;Quindi, come vi dicevo, se avete intenzione di pubblicare qualche App all'interno dell'Office Store, tenete ben a mente il contenuto di questo documento.
&lt;br /&gt;
&lt;br /&gt;Se volete un'introduzione allo sviluppo di App per SharePoint 2013 ed Office 2013, vi ricordo l'appuntamento con la &lt;a href="http://www.sharepointconference.it/events/2013" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; a Milano, nei giorni 5, 6 e 7 Marzo, presso il Centro Congressi Milano Fiori (Assago).
&lt;br /&gt;Oltre alle mie due sessioni sul nuovo App-Model di SharePoint 2013, c'è anche una sessione di Fabio sullo sviluppo di App all'interno dei programmi del pacchetto di Office 2013.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/App model.aspx" title="TAG: App model"&gt;App model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OfficeStoreValidationPolicies13.aspx" /><issued>2013-2-13T11:4:15+01:00</issued><modified>2013-2-13T11:4:15+01:00</modified></entry><entry><title>Top 25 SharePoint influencer! :)</title><id>/Blog/Top25EuropeanSharePointInfluencer.aspx</id><created>2013-2-8T13:9:5+01:00</created><content type="text/html" mode="escaped">&lt;div style="float: right; margin: 10px;"&gt;&lt;a href="http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf" title="I'm one of the TOP 25 SharePoint European Influencers" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/top25EuropeanSharePointInfluencers.jpg" alt="I'm one of the TOP 25 SharePoint European Influencers" /&gt;&lt;/a&gt;&lt;/div&gt;Mercoledì sera ho ricevuto la chiamata da &lt;a href="http://www.sharepoint-reference.com/default.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; che mi diceva che a Copenaghen hanno annunciato il mio nome tra i primi 25 influencers su SharePoint in Europa.
&lt;br /&gt;Hanno detto "Giuseppe Marci" per l'esattezza, ma è stato comunque una bella notizia :)
&lt;br /&gt;Ovviamente anche Paolo ha portato avanti l'orgoglio italiano.
&lt;br /&gt;Ecco qua il PDF ufficiale:
&lt;br /&gt;&lt;a href="http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf" title="" target="_blank"&gt;http://harmon.ie/sites/default/files/images/docs/Top25EUSPInfluencers-Final.pdf&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A quelle 57 buon'anime, un grazie di cuore!
&lt;br /&gt;Peppe
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Top25EuropeanSharePointInfluencer.aspx" /><issued>2013-2-8T13:9:5+01:00</issued><modified>2013-2-8T13:9:5+01:00</modified></entry><entry><title>Sono finito nel listone per i top 25 European SharePoint influencers</title><id>/Blog/Top25EuropeanSharePointInfluencers.aspx</id><created>2013-1-10T9:30:46+01:00</created><content type="text/html" mode="escaped">Non so bene come sia capitato eh.. sta di fatto che settimana scorsa mi è arrivata la mail che mi avvisava che il mio nominativo era tra i tanti candidati per la classifica dei migliori 25 "influencers" su SharePoint in Europa.
&lt;br /&gt;Ovviamente sono molto contento. Soprattutto perchè nella stessa lista ci sono dei nomi altisonanti di professionisti che lavorano su SharePoint da un sacco di tempo, superbravi e che sono veramente molto attivi nella community.
&lt;br /&gt;Trovate la lista, con la possibilità di esprimere il vostro voto, qua:
&lt;br /&gt;- &lt;a href="http://harmon.ie/top-25-european-sharepoint-community-influencers" title="top 25 European SharePoint influencers" target="_blank"&gt;http://harmon.ie/top-25-european-sharepoint-community-influencers&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Assieme a me, per quanto riguarda "l'orgoglio italiano" :) ci sono Paolo, Igor, Romeo, Claudio, Barbarina, Fabio, Marco, Francesco, Patrick, Gabriele e Martin.
&lt;br /&gt;Siamo in minoranza confronto le altre nazioni, ma facciamo comunque la nostra figura. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Top25EuropeanSharePointInfluencers.aspx" /><issued>2013-1-10T9:30:46+01:00</issued><modified>2013-1-10T9:30:46+01:00</modified></entry><entry><title>Paginare i risultati con una chiamata REST su SharePoint 2013</title><id>/Blog/PaginateRESTResultsWithSharePoint2013.aspx</id><created>2013-1-9T19:13:24+01:00</created><content type="text/html" mode="escaped">E' il terzo tip sulla nuova interfaccia REST di SharePoint 2013. Fino ad ora abbiamo imparato sia a &lt;a href="" title="" target="_blank"&gt;filtrare&lt;/a&gt; i risultati, sia &lt;a href="" title="" target="_blank"&gt;recuperare solo le proprietà che ci interessano&lt;/a&gt; di una risorsa. Oggi vedremo come paginare i risultati e come ordinarli. 
&lt;br /&gt;
&lt;br /&gt;L'oridinamento è facile. Basta utilizzare la querystring "$orderby", specificare il campo per cui si vuole ordinare i risultati e il tipo di ordinamento, se discendente ("desc") o se ascendente ("asc"). 
&lt;br /&gt;Se volessimo ritornare tutte le liste di un sito, ordinate in base al nome, dovremmo quindi utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$orderby=Title asc
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;La paginazione dei risultati di una richiesta invece, è sempre una best practice da rispettare in qualsiasi applicazione che si basa su dati presi da fonti di date esterne, soprattutto in applicazioni come quelle che andremo a sviluppare, basate su richieste HTTP. 
&lt;br /&gt;Per paginare, il servizio REST di SharePoint 2013 (seguendo le regole del protocollo OData) espone gli operatori "$top" e "$skip", utili rispettivamente a specificare il numero di elementi per pagina e il numero di elementi da saltare. 
&lt;br /&gt;Quindi, volendo prelevare le prime 5 liste di un sito SharePoint, possiamo utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$top=5&amp;$skip=0
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo caso ho specificato anche il parametro $skip a puro titolo d'esempio, perchè di default (se non specificato) prendere il valore 0. Nel caso in cui volessimo visualizzare invece la seconda pagina di risultati, dobbiamo utilizzare la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists/?$top=5&amp;$skip=5
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo modo sto dicendo la servizio REST di SharePoint 2013 di ritornarmi tutte le liste a partire dalla sesta fino alla decima.
&lt;br /&gt;Poi, fate conto che, è meglio spostare alla fine della URL questi parametri, perchè è sempre meglio prima applicare filtri, ordinamenti, selezioni, ecc.. per poi paginare.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Attenzione però!&lt;/b&gt; Sappiate che il parametro $skip, riguardo la selezione di elementi di lista (quindi, per intenderci, facendo un query tipo /_api/web/lists/getbytitle('LISTNAME')/items), viene IGNORATO!
&lt;br /&gt;Parlaremo a breve di questa issue, che è decisamente seccante.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/PaginateRESTResultsWithSharePoint2013.aspx" /><issued>2013-1-9T19:13:24+01:00</issued><modified>2013-1-9T19:13:24+01:00</modified></entry><entry><title>Filtrare i risultati con una chiamata REST su SharePoint 2013</title><id>/Blog/FIlterPropertiesWithSharePoint2013REST.aspx</id><created>2012-12-13T16:26:57+01:00</created><content type="text/html" mode="escaped">Una volta capito &lt;a href="http://www.peppedotnet.it/Blog/SelectOnlyFewPropertiesWithSharePoint2013REST.aspx" title="Selezionare solo certe proprietà con una chiamata REST su SharePoint 2013" target="_blank"&gt;come selezionare solo un set di proprietà&lt;/a&gt;, vediamo come possiamo recuperare elementi dai contenuti presenti su SharePoint 2013, in base ad uno o più filtri. La querystring di riferimento questa volta è la querystring "$filter", che va utilizzata assieme ad una serie di operatori logici che ci danno la possibilità di specificare i nostri criteri di filtro.
&lt;br /&gt;
&lt;br /&gt;Vediamo quali sono gli operatori che abbiamo a disposizione. 
&lt;br /&gt;Per comparazioni su numeri:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lt - Less than&lt;/li&gt;&lt;li&gt;Le - Less than or equal&lt;/li&gt;&lt;li&gt;Gt - Greater than&lt;/li&gt;&lt;li&gt;Ge - Greater than or equal&lt;/li&gt;&lt;li&gt;Eq - Equal&lt;/li&gt;&lt;li&gt;Ne - Not equal&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Per vedere un esempio d'utilizzo di questi operatori, provate a richiamare con il vostro browser la seguente URL (da utilizzare per recuperare tutte le document library di un sito SharePoint 2013):
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=BaseTemplate eq 101
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Per comparazioni di stringhe:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;startsWith&lt;/li&gt;&lt;li&gt;substringOf&lt;/li&gt;&lt;li&gt;Eq - Equal&lt;/li&gt;&lt;li&gt;Ne - Not equal&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Per vedere un esempio d'utilizzo di questi operatori, provate a richiamare con il vostro browser la seguente URL (da utilizzare per recuperare tutte le liste il cui titolo inizia con la parola "Shared"):
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=startsWith(Title, 'Shared')
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Per comparazioni su date:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;day(DateTime) - funzione che recupera il giorno a partire da una specifica data&lt;/li&gt;&lt;li&gt;month(DateTime) - funzione che recupera il mese a partire da una specifica data&lt;/li&gt;&lt;li&gt;year(DateTime) - funzione che recupera l'anno a partire da una specifica data&lt;/li&gt;&lt;li&gt;hour(DateTime) - funzione che recupera l'ora a partire da una specifica data&lt;/li&gt;&lt;li&gt;minute(DateTime) - funzione che recupera i minuti a partire da una specifica data&lt;/li&gt;&lt;li&gt;second(DateTime) funzione che recupera i secondi a partire da una specifica data&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Per vedere un esempio d'utilizzo di questi operatori, provate a richiamare con il vostro browser la seguente URL (da utilizzare per recuperare tutte le liste create a maggio):
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=month(Created) eq 5
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Nel caso in cui volessimo invece concatenare due o più filtri invece, ci basta solamentae aggiungere una nuova querystring di tipo $filter alla nostra URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists?$filter=(BaseTemplate eq 101) and (startswith(Title, 'Shared'))
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Facile no?
&lt;br /&gt;Utilizzando questa interfaccia, capirete che avrete bisogno sicuramente di una libreria che vi aiuta nella composizione di queste URL, onde evitare di fare concatenazioni di stringhe una dietro l'altra.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPDATE: Aggiornata la sintassi per i filtri multipli (&lt;a href="http://www.peppedotnet.it/Blog/MultipleFiltersWithRESTSP2013.aspx" title="" target="_blank"&gt;leggere qui i dettagli&lt;/a&gt;)&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/FIlterPropertiesWithSharePoint2013REST.aspx" /><issued>2012-12-13T16:26:57+01:00</issued><modified>2012-12-13T16:26:57+01:00</modified></entry><entry><title>Selezionare solo certe propriet&#224; con una chiamata REST su SharePoint 2013</title><id>/Blog/SelectOnlyFewPropertiesWithSharePoint2013REST.aspx</id><created>2012-11-19T17:38:37+01:00</created><content type="text/html" mode="escaped">Bene, nel &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013RESTIntroduction.aspx" title="Introduzione alla nuova interfaccia REST di SharePoint 2013" target="_blank"&gt;precedente post&lt;/a&gt; abbiamo visto i principali endpoint della nuova interfaccia REST di SharePoint 2013. Vediamo ora come abbassare il peso di ogni risposta recuperando solamente le proprietà che ci servono, scartando così le altre. 
&lt;br /&gt;Se provate ad eseguire sul vostro browser la seguente URL:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;vedrete l'elenco completo delle proprietà (in formato XML) che avete a disposizione in lettura, riguardo il sito SharePoint che avete scelto. Alcune sono direttamente valorizzate, altre sono dei link. 
&lt;br /&gt;Se volete selezionare solo alcune di queste proprietà, così da rendere più "leggero" il corpo della risposta HTTP, è necessario utilizzare la querystring "$select" nel seguente modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web?$select=title,id
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come vedete è molto facile utilizzare questo parametro e, oltretutto, è veramente importante utilizzarlo. Questo perchè faremo uso di questo tipo di URL per richieste provenienti da applicazioni che girano lato-client (App, normali Web Part o altre tipologie di applicazioni eseguite al di fuori del contesto di SharePoint) e caricare la richiesta di informazioni che poi effettivamente non utilizziamo, è un grave errore.
&lt;br /&gt;
&lt;br /&gt;Infine, è molto importante notare che il parametro "$select" può essere utilizzato su qualsiasi tipologia di risorsa che richiediamo dal servizio REST di SharePoint 2013. Non è limitato a liste o siti, ma è disponibile su qualsiasi tipologia di oggetto o di collezione. 
&lt;br /&gt;Per esempio, volendo recuperare solamente il nome di ogni folder creata all'interno di una document library del sito SharePoint corrente, potete utilizzare la sintassi:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/lists/getbytitle('shared documents')/rootfolder/folders?$select=Name
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;La funzionalità è la stessa che abbiamo speigato qui:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/IncreasePerformanceOnSelectionUsingSharePointClientObjectModel.aspx" title="Migliorare le performance del Client Object Model di SharePoint 2010" target="_blank"&gt;http://www.peppedotnet.it/Blog/IncreasePerformanceOnSelectionUsingSharePointClientObjectModel.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che potete usare la mia web part di test per le query REST che abbiamo visto all'interno di questo post. La trovate su codeplex a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://sp2013resttestwp.codeplex.com/" title="SharePoint 2013 REST Test Web Part" target="_blank"&gt;http://sp2013resttestwp.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SelectOnlyFewPropertiesWithSharePoint2013REST.aspx" /><issued>2012-11-19T17:38:37+01:00</issued><modified>2012-11-19T17:38:37+01:00</modified></entry><entry><title>SharePoint 2013 REST test web part su Codeplex</title><id>/Blog/SharePoint2013RESTTestWebPartOnCodeplex.aspx</id><created>2012-11-12T16:41:55+01:00</created><content type="text/html" mode="escaped">Ho messo uno dei miei ultimi progetti su codeplex, progetto molto semplice ma che mi ha aiutato a capire bene come funziona nel dettaglio la nuova interfaccia REST di SharePoint 2013 in tutto questo lungo periodo di beta.
&lt;br /&gt;Sostanzialmente è una web part, messa dentro ad una Farm Solution, che ci permettere di testare in tutto e per tutto le chiamate HTTP che possiamo fare alle "web api" esposte da SharePoint, sfruttando sia i verbi GET e POST sia tutti gli "x-HttpMethods" supportati (quindi DELETE, PUT, MERGE, PATCH) per fare le nostre operazioni CRUD sui contenuti dei nostri siti SharePoint o per effettuare particolari azioni/richiamare funzionalità. Il tutto, ritornando i risultati di ogni chiamata in formato JSON.
&lt;br /&gt;Ecco qua il link diretto all'applicazione (potete scaricare sia il .wsp che darvi un occhiata al codice):
&lt;br /&gt;- &lt;a href="http://sp2013resttestwp.codeplex.com/" title="SharePoint 2013 REST Test Web Part" target="_blank"&gt;http://sp2013resttestwp.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' vero che possiamo fare le stesse operazioni con il browser (solo in GET e con una visualizzazione in XML) o con programmi tipo fiddler (sia GET che POST, sia XML che JSON), ma poterlo fare direttamente dalla pagina SharePoint mi pareva molto più comodo.
&lt;br /&gt;Inoltre, è un ottimo spunto da cui partire per imparare a ad utilizzare l'interfaccia REST e scrivere applicazioni .NET o Javascript che ne utilizzano le potenzialità. La parte di front-end è fatta utilizzando JQuery per le chiamate AJAX e Knockout JS per la visualizzazione dei dati e l'esecuzione delle azioni dalla UI. Knockout è una libreria open-source dalla quale ormai non riesco più a staccarmi.
&lt;br /&gt;Nei prossimi post vedremo come fare qualche chiamata all'interfaccia REST di SharePoint 2013 (dopo averne visto una &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013RESTIntroduction.aspx" title="Introduzione alla nuova interfaccia REST di SharePoint 2013" target="_blank"&gt;prima introduzione&lt;/a&gt; e qualche &lt;a href="http://www.peppedotnet.it/Blog/HowToCallSharePoint2013RestWithJQuery.aspx" title="Chiamare le API Rest di SharePoint 2013 tramite JQuery" target="_blank"&gt;accenno di utilizzo&lt;/a&gt;), così da prendere un pò la mano con questa nuova interfaccia.
&lt;br /&gt;
&lt;br /&gt;Ecco quindi uno screenshot dell'applicazione in esecuzione, che richiedere il nome dell'utente corrente tramite una chiamata all'interfaccia REST di SharePoint 2013.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.codeplex.com/Download?ProjectName=sp2013resttestwp&amp;DownloadId=473080" title="SharePoint 2013 REST Test Web Part" /&gt;
&lt;br /&gt;
&lt;br /&gt;Assieme a questo progetto poi, ho creato un package nuGet con una mini-libreria Javascript che ci aiuta a generare le URL da utilizzare per le chiamate all'interfaccia REST di SharePoint 2013.
&lt;br /&gt;La trovate a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://nuget.org/packages/d4s.sp2013.rest" title="SharePoint 2013 REST JS Helper" target="_blank"&gt;http://nuget.org/packages/d4s.sp2013.rest&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Questa è ad un livello molto più embrionale, quindi ne riparleremo quando sarà un pò più "solida".
&lt;br /&gt;
&lt;br /&gt;Come sempre, se qualcuno vuole partecipare al progetto e darmi una mano per implementare qualche nuova feature, io sono tutto orecchie :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Codeplex.aspx" title="TAG: Codeplex"&gt;Codeplex&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013RESTTestWebPartOnCodeplex.aspx" /><issued>2012-11-12T16:41:55+01:00</issued><modified>2012-11-12T16:41:55+01:00</modified></entry><entry><title>Chiamare le API Rest di SharePoint 2013 tramite JQuery</title><id>/Blog/HowToCallSharePoint2013RestWithJQuery.aspx</id><created>2012-11-6T11:53:47+01:00</created><content type="text/html" mode="escaped">Come vi dicevo in uno dei &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013RESTIntroduction.aspx" title="Introduzione alla nuova interfaccia REST di SharePoint 2013" target="_blank"&gt;precedenti post&lt;/a&gt;, SharePoint 2013 espone una nuova interfaccia REST in grado di permetterci la lettura di informazioni e/o l'esecuzione di operazioni sui nostri siti SharePoint da applicazioni che girano client-side, quindi al di fuori del contesto di SharePoint stesso. Queste possono essere applicazioni Windows (e non), altre applicazioni web, RIA, customizzazioni Javascript e tante altre ancora. 
&lt;br /&gt;Giusto per essere completi, questa nuova interfaccia è una delle due tipologie di API che possiamo scegliere per lo sviluppo di App SharePoint 2013 (altra novità, che abbiamo già introdotto &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart1.aspx" title="Introduzione al nuovo App Model di SharePoint 2013 - Parte 1" target="_blank"&gt;qua&lt;/a&gt;, &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart2.aspx" title="Introduzione al nuovo App Model di SharePoint 2013 - Parte 2" target="_blank"&gt;qua&lt;/a&gt; e &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart3.aspx" title="Introduzione al nuovo App Model di SharePoint 2013 - Parte 3" target="_blank"&gt;qua&lt;/a&gt;). 
&lt;br /&gt;A mio parere, questo set di API si sposa perfettamente con Javascript, perchè è possibile impostare la richiesta HTTP in modo tale da far ritornare le informazioni in formato JSON e perchè tale formato (JSON appunto) è facilmente maneggiabile con un linguaggio dinamico come Javascript. 
&lt;br /&gt;Per di più, da anni ormai abbiamo la possibilità di utilizzare &lt;a href="http://www.jquery.com" title="JQuery" target="_blank"&gt;JQuery&lt;/a&gt;, libreria open-source che facilita notevolmente l'utilizzo di questo linguaggio client-side, linguaggio che a prima vista può sembrar facile all'utilizzo ma che, vi assicuro, è molto più complesso di quello che sembra. 
&lt;br /&gt;Ecco.. JQuery ha un fantastico metodo, il metodo "ajax", che ci permette di effettuare delle chiamate server-side sfruttando l'ormai noto oggetto "xmlHttpRequest" (dico ormai noto, perchè è un concetto vecchio di 10 anni) e specificando uno o più parametri, così da personalizzare al massimo la nostra richiesta HTTP. 
&lt;br /&gt;Questo metodo è perfetto per richiamare uno degli endpoint REST esposti da SharePoint 2013, di cui &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013RESTIntroduction.aspx" title="Introduzione alla nuova interfaccia REST di SharePoint 2013" target="_blank"&gt;abbiamo già parlato&lt;/a&gt;. 
&lt;br /&gt;Vi lascio qui la sintassi minima per fare una chiamata in GET e recuperare informazioni da SharePoint 2013, in lettura.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$.ajax({
&lt;br /&gt;          url: '/_api/web',
&lt;br /&gt;          type: 'GET',
&lt;br /&gt;          contentType: 'application/json;odata=verbose',
&lt;br /&gt;          headers: { 'Accept': 'application/json;odata=verbose' },
&lt;br /&gt;          cache: &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;,
&lt;br /&gt;          success: function (data) {
&lt;br /&gt;                    &lt;span style="color: #008200"&gt;//data.d contains our result&lt;/span&gt;
          },
&lt;br /&gt;          error: function (jqXHR, textStatus, errorThrown) {
&lt;br /&gt;                    &lt;span style="color: #008200"&gt;//handle error...&lt;/span&gt;
          }
&lt;br /&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo estratto di codice ho utilizzato il metodo "ajax" di JQuery per richiamare le API Rest esposte da SharePoint 2013 (ho utilizzato una URL relativa, il che significa che questo codice funziona correttamente all'interno di un sito SharePoint 2013), utilizzando qualche parametro aggiuntivo come:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;url: indirizzo dell'endpoint REST di SharePoint 2013&lt;/li&gt;&lt;li&gt;type: metodo HTTP da utilizzare per la richiesta (possono essere solo 'GET' o 'POST', nel nostro caso abbiamo scelto 'GET' per effettuare una lettura)&lt;/li&gt;&lt;li&gt;contentType: per specificare che i dati di ritorno devono essere serializzati in JSON&lt;/li&gt;&lt;li&gt;cache: per specificare al browser di non mettere in cache la risposta a questa chiamata&lt;/li&gt;&lt;li&gt;success: callback per la gestione della risposta&lt;/li&gt;&lt;li&gt;error: callback per la gestione degli errori&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Col tempo, imparerete che JQuery da sola non basta, anzi. Il più delle volte incasina solamente le cose, ma diciamo che è troppo presto per parlare di questo ancora. 
&lt;br /&gt;Intanto, tenete buona questa sintassi, che sarà quella che utilizzerete sempre per interagire con le informazioni presenti su SharePoint dalle vostre App, web part o altre applicazioni client-side che girano sui vostri siti SharePoint 2013.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCallSharePoint2013RestWithJQuery.aspx" /><issued>2012-11-6T11:53:47+01:00</issued><modified>2012-11-6T11:53:47+01:00</modified></entry><entry><title>Disponibili per il download anche SharePoint Foundation 2013 e SharePoint Designer 2013</title><id>/Blog/SharePointFoundation2013AndDesigner2013RTM.aspx</id><created>2012-11-2T9:35:37+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/sp2013/sp2013.png" alt="SharePoint 2013" style="margin: 10px; float:right;" /&gt;Dopo il &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013AndOffice2013ForMSDNSubscribers.aspx" title="SharePoint Server 2013 RTM su MSDN" target="_blank"&gt;rilascio in RTM di SharePoint 2013&lt;/a&gt; (e di altri prodotti della linea di Office 2013), finalmente abbiamo a disposizione il download di:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35488" title="SharePoint Foundation 2013" target="_blank"&gt;SharePoint Foundation 2013&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35491" title="SharePoint Designer 2013" target="_blank"&gt;SharePoint Designer 2013&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Rispetto a quanto è possibile scaricare della versione Server con la sottoscrizione MSDN, per SharePoint Foundation 2013 e SharePoint Designer 2013 sono già disponibili anche le versioni localizzate nelle varie lingue e i vari &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35492" title="SharePoint Foundation 2013 Language Pack" target="_blank"&gt;Language Pack&lt;/a&gt; aggiuntivi.
&lt;br /&gt;
&lt;br /&gt;Purtroppo, ancora non si sa niente riguardo la versione RTM dei tool di sviluppo per Visual Studio 2012. Credo che dovremmo aspettare quanto meno la fine della SharePoint Conference di Las Vegas per averli.
&lt;br /&gt;Attualmente funzionano per quanto riguarda lo sviluppo di Farm, Sandbox solutions e di App. Hanno problemi invece per quanto riguarda l'implementazione dei workflow.
&lt;br /&gt;Dobbiamo avere ancora un pò di pazienza.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointFoundation2013AndDesigner2013RTM.aspx" /><issued>2012-11-2T9:35:37+01:00</issued><modified>2012-11-2T9:35:37+01:00</modified></entry><entry><title>SharePoint 2013 e Office 2013 disponibili per il download per i subscriber MSDN</title><id>/Blog/SharePoint2013AndOffice2013ForMSDNSubscribers.aspx</id><created>2012-10-25T17:46:4+01:00</created><content type="text/html" mode="escaped">Da ieri sera, sono disponibili per il download le versioni RTM di:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SharePoint Server 2013&lt;/li&gt;&lt;li&gt;Office Professional Plus 2013&lt;/li&gt;&lt;li&gt;Visio 2013&lt;/li&gt;&lt;li&gt;Project 2013&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Mancano ancora le versioni di SharePoint Designer, SharePoint Foundation, assieme a tutte le versioni localizzate dei vari prodotti sopra citati (per ora è disponibile solo l'inglese).
&lt;br /&gt;Rispetto a quanto &lt;a href="http://blogs.office.com/b/office-news/archive/2012/10/11/office-reaches-rtm.aspx" title="Office 2013 RTM" target="_blank"&gt;annunciato poco tempo fa&lt;/a&gt;, hanno rilasciato le versioni RTM un pò prima (erano previste a metà novembre). Ed in effetti ieri sera erano tutti un pò stupiti :)
&lt;br /&gt;
&lt;br /&gt;In ogni caso, io me li son presi ed ho iniziato ad installare quantomeno SharePoint. Ecco il nuovo splash screen dell'installer:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/01_splashScreen.png" alt="SharePoint 2013 Splash Screen" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per l'installazione su una singola macchina, seguite questa pagina della documentazione su technet:
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/library/cc262243(v=office.15).aspx" title="Install SharePoint 2013 on a single server with SQL Server" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc262243(v=office.15).aspx&lt;/a&gt;
&lt;br /&gt;Per le altre installazioni, seguite questa pagina:
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/library/cc303424(v=office.15).aspx" title="Install SharePoint 2013" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc303424(v=office.15).aspx&lt;/a&gt;
&lt;br /&gt;Entrambe sono state aggiornate da poco, quindi possono considerarsi pressoché ufficiali.
&lt;br /&gt;
&lt;br /&gt;E' rimasto tutto come prima per quanto riguarda l'installer, l'unica cosa è che se volete installarlo su Windows Server 2008 R2, oltre a dover avere installato il Service Pack 1, dovete installare anche questi hotfix:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=254221" title="KB 2554876" target="_blank"&gt;KB 2554876&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/p/?LinkID=254222" title="KB 2708075" target="_blank"&gt;KB 2708075&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/p/?LinkId=267536" title="KB 2759112" target="_blank"&gt;KB 2759112&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;La documentazione ne specifica un quarto, ma è solo per Windows Server 2012.
&lt;br /&gt;
&lt;br /&gt;Poi, occhio ai requisiti hardware e software:
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/library/cc262485(v=office.15).aspx" title="SharePoint 2013 Requirements" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc262485(v=office.15).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Quindi, finalmente ci siamo!
&lt;br /&gt;Inizia un periodo molto bello, perchè abbiamo in mano la versione finale da utilizzare nei nostri progetti, ma anche un periodo molto impegnativo. Soprattutto nel panorama italiano, le aziende hanno sia MOSS 2007, che SharePoint 2010 (c'è chi ha ancora SPS 2003, ve lo assicuro) e c'è chi vorrà ora la nuova versione. Questo per "noi del settore" significa tanto impegno, 3/4 ambienti di sviluppo e tutto ciò che ne consegue.
&lt;br /&gt;Coraggio :)
&lt;br /&gt;
&lt;br /&gt;Oltre a ciò, vi vorrei ricordare che vedremo in uso la versione ufficiale di SharePoint 2013 alla &lt;a href="http://www.sharepointconference.it/events/Future2012/?utm_source=speaker&amp;utm_medium=banner&amp;utm_campaign=spread" title="SharePoint Future 2012" target="_blank"&gt;SharePoint Future&lt;/a&gt; e alla successiva &lt;a href="http://www.sharepointconference.it/?utm_source=speaker&amp;utm_medium=banner&amp;utm_campaign=spread" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt;. 
&lt;br /&gt;Due eventi, completamente dedicati a SharePoint 2013 ed Office 2013 che non potete perdervi.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013AndOffice2013ForMSDNSubscribers.aspx" /><issued>2012-10-25T17:46:4+01:00</issued><modified>2012-10-25T17:46:4+01:00</modified></entry><entry><title>Introduzione alla nuova interfaccia REST di SharePoint 2013</title><id>/Blog/SharePoint2013RESTIntroduction.aspx</id><created>2012-10-22T12:52:42+01:00</created><content type="text/html" mode="escaped">Abbiamo già accennato alle novità proposte da SharePoint 2013 per quanto riguarda l'interfaccia REST, introducendo &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4.aspx" title="Il modello di programmazione delle App di SharePoint 2013" target="_blank"&gt;il modello di programmazione&lt;/a&gt; che abbiamo a disposizione durante lo sviluppo di App. 
&lt;br /&gt;Cerchiamo però di entrare un pò meglio in questo argomento, perchè vi assicuro che ne vale veramente la pena. 
&lt;br /&gt;
&lt;br /&gt;Vi ricordate il Client Object Model introdotto un pò di anni fa con SharePoint 2010? 
&lt;br /&gt;Ecco, fate conto che su SharePoint 2013 è stato innanzitutto notevolmente arricchito (ma questo ormai ve l'ho detto già un pò di volte) e, soprattutto, che il relativo servizio WCF che veniva chiamato ogni volta che si eseguiva il metodo ExecuteQuery (o ExecuteQueryAsync nel caso di script javascript o RIA Silverlight) è stato esposto attraverso una specifica URL e modificato in modo tale da seguire tutte le regole date dalle architetture di tipo REST, dal protocollo OData (utile alla rappresentazione delle varie entità in gioco) e dal protocollo OAuth (utile invece all’autenticazione). 
&lt;br /&gt;Che significa? 
&lt;br /&gt;Significa che ora abbiamo la possibilità di effettuare delle query HTTP verso un server SharePoint 2013, potendo recuperare non solo i contenuti di liste (così come potevamo già fare nella precedente versione del prodotto, utilizzando il servizio listdata.svc), ma potendo leggere la maggior parte delle informazioni che il Client Object Model stesso espone, assieme alla possibilità di sfruttarne la maggior parte delle funzionalità. 
&lt;br /&gt;Quindi non abbiamo più a che fare con un semplice servizio per effettuare le normali operazioni CRUD sulle liste SharePoint, ma con una vera e propria interfaccia utile a manipolare dati, eseguire azioni, modificare configurazioni, ecc.. interfaccia che rende disponibili tutte queste funzionalità non solo ad applicazioni SharePoint, ma a qualsiasi client in grado di fare una semplice richiesta HTTP, senza portarsi dietro alcun tipo di riferimento alle librerie di SharePoint. 
&lt;br /&gt;
&lt;br /&gt;Per chi di voi non conosce REST, è molto importante capire che REST non è un protocollo, ne un particolare design pattern, ne tanto meno un servizio che ritorna dei dati in JSON o che può permetterci di fare chiamate passando gli ID all'interno delle URL senza usare le querystring. REST è uno stile architetturale orientato alle risorse, in grado di permetterci di costruire applicazioni distribuite basate sul protcollo HTTP e in grado di connettere tra loro piattaforme differenti. I servizi basati su REST espongono una o più azioni (sfruttando sia i metodi GET e POST del protocollo HTTP, sia i verbi PUT, DELETE, ecc..) volte alla gestione di una o più risorse, con un particolare stato, che possono essere recuperate o manipolate tramite specifici identificatori. 
&lt;br /&gt;
&lt;br /&gt;Per poter utilizzare le funzionalità REST esposte da SharePoint 2013 dobbiamo prima avvalerci di alcuni prerequisiti: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Conoscenza dell’endpoint e del tipo di operazione da effettuare&lt;/li&gt;&lt;li&gt;Conoscenza delle entità OData ritornate dalle chiamate ai vari endpoint o da passare in input agli endpoint stessi&lt;/li&gt;&lt;li&gt;Conoscenza della sintassi da utilizzare per effettuare le varie richieste&lt;/li&gt;&lt;li&gt;Presenza di un contesto di autenticazione valido (perchè ovviamente ogni azione a seguito di una chiamata ad un endpoint REST di SharePoint 2013, viene eseguita con le credenziali correnti)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Gli endpoint di partenza&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;Conoscere la URL da chiamare è sicuramente la prima cosa di cui preoccuparsi.  SharePoint 2013 espone i suoi endpoint REST attraverso la URL di base: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;lasciando perdere il servizio "listdata.svc" (che resta disponibile per retro-compatibilità) e seguendo sicuramente le mode del momento per quanto riguarda la scelta della chiave "api" :) 
&lt;br /&gt;Detto questo, trovate di seguito gli endpoint esposti dalla preview di SharePoint 2013 da cui partire per effettuare le nostre operazioni client-side: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://[siteurl]/_api/site (endpoint di partenza per le funzionalità legate alla site collection)&lt;/li&gt;&lt;li&gt;http://[siteurl]/_api/web (endpoint di partenza per le funzionalità legate al singolo sito)&lt;/li&gt;&lt;li&gt;http://[siteurl]/_api/search (endpoint di partenza per le funzionalità di ricerca)&lt;/li&gt;&lt;li&gt;http://[siteurl]/_api/publishing (endpoint di partenza per le funzionalità di publishing)&lt;/li&gt;&lt;li&gt;http://[siteurl]/_api/SP.UserProfiles.PeopleManager (endpoint di partenza per le funzionalità legate allo User Profile Service)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Come vedete quindi, già da questi "entry-point", si intravedono un sacco di novità. 
&lt;br /&gt;Rispetto a prima, possiamo accedere a siti e site collection, possiamo fare ricerche, recuperare informazioni sugli utenti dallo User Profile Service ed utilizzare le funzionalità di Publishing, il tutto utilizzando delle richieste HTTP. Il che è veramente fantastico!  
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin: 4px; margin-left: 10px; font-style: italic"&gt;Nota: come sempre, prendete con le pinze queste informazioni perchè siamo ancora in preview di SharePoint e ci sta che qualcosa cambi (mi immagino che quanto meno l’endpoint SP.UsersProfiles.PeopleManager lo cambino).&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;La sintassi&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;Per sfruttare le funzionalità esposte da ciascun endpoint, dobbiamo però conoscere la sintassi da utilizzare per comporre la nostra URL utile poi alla chiamata HTTP verso il server SharePoint 2013. All'interno della documentazione c'è un fantastico diagramma che spiega a grandi linee le regole sintattiche di composizione della URL, ve la riporto qua. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="/images/sp2013/rest_syntax.jpg" title="SharePoint 2013 REST Syntax" target="_blank" border="0"&gt;&lt;img src="/images/sp2013/rest_syntax_s.jpg" alt="SharePoint 2013 REST Syntax" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere abbiamo sia la possibilità di utilizzare tutti gli operatori definiti dal protocollo OData per filtrare, selezionare, paginare, ecc.. sia la possibilità di richiamare specifiche classi, metodi o proprietà definite dalle strutture proprie delle librerie del Client Object Model di SharePoint 2013. 
&lt;br /&gt;Giusto per farvi capire, all'endpoint:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;corrisponde la classe "Web" del namespace "Microsoft.SharePoint.Client", il che significa che per esempio potete recuperare il nome di un particolare sito SharePoint tramite una richiesta HTTP alla seguente URL: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[siteurl]/_api/web/title 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Con questa URL stiamo semplicemente richiedendo il valore della proprietà "Title" della classe "Web" propria del Client Object Model di SharePoint 2013. 
&lt;br /&gt;
&lt;br /&gt;Riguardo il formato dei dati invece, sappiate che potete utilizzare sia JSON che XML. Se utilizzate l'URL che abbiamo appena visto all'interno del vostro browser, vi ritornerà XML. Ma potete cambiare questa cosa modificando i parametri della vostra richiesta HTTP. 
&lt;br /&gt;
&lt;br /&gt;Nei prossimi post vedremo nel dettaglio alcuni esempi, così da capire bene queste regole. 
&lt;br /&gt;Intanto vi lascio un pò di documentazione: 
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/fp142385(v=office.15)" title="SharePoint 2013 SDK" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/fp142385(v=office.15)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013RESTIntroduction.aspx" /><issued>2012-10-22T12:52:42+01:00</issued><modified>2012-10-22T12:52:42+01:00</modified></entry><entry><title>Cambio di location per la SharePoint Future 2012: Hotel Enterprise, Corso Sempione - Milano</title><id>/Blog/CambioLocationSharePointFuture2012.aspx</id><created>2012-10-16T9:45:25+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/spft12_MediumRectangle.png" alt="SharePoint Future 2013" style="float:right; margin: 10px" /&gt;Comunicazione di servizio.. è cambiata la location della SharePoint Future 2012 che passa all'&lt;span style="text-decoration: underline"&gt;Enterprise Hotel&lt;/span&gt; in Corso Sempione (sempre a Milano).
&lt;br /&gt;
&lt;br /&gt;Trovate tutte le informazioni direttamente sul sito della conferenza:
&lt;br /&gt;- &lt;a href="http://www.sharepointconference.it/events/Future2012/location.aspx" title="SharePoint Future 2012 - Cambio di location" target="_blank"&gt;http://www.sharepointconference.it/events/Future2012/location.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ne approfitto per ricordarvi che ci sono anche dei posti liberi e che per i primi di voi che si iscriveranno alla SharePoint Conference 2013 potranno poi entrare gratis alla SharePoint Future 2012.
&lt;br /&gt;Ora che &lt;a href="http://blogs.office.com/b/office-news/archive/2012/10/11/office-reaches-rtm.aspx" title="Office 2013 reaches RTM" target="_blank"&gt;è stato annunciato&lt;/a&gt; il raggiungimento della RTM della nuova versione di Office e di tutta la famiglia "2013" e che a breve usciranno le versioni ufficiali per i clienti Volume Licensing di Microsoft, non c'è veramente più tempo da perdere.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Future.aspx" title="TAG: SharePoint Future"&gt;SharePoint Future&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CambioLocationSharePointFuture2012.aspx" /><issued>2012-10-16T9:45:25+01:00</issued><modified>2012-10-16T9:45:25+01:00</modified></entry><entry><title>Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013</title><id>/Blog/ConfigureDevelopmentEnvironmentForSharePoint2013Apps.aspx</id><created>2012-10-12T16:4:5+01:00</created><content type="text/html" mode="escaped">Nei precedenti post abbiamo dato un'introduzione al nuovo modello orientato alle App disponibile su SharePoint 2013. Oggi vedremo come dobbiamo preparare il nostro ambiente di sviluppo per la scrittura della nostra prima App. 
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 10px; font-style: italic"&gt;Nota: vi ricordo che questo post viene scritto durante la fase di Preview di SharePoint 2013 e che tutte le informazioni presenti sono soggette a cambiamento.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Per prima cosa, dobbiamo installare i requisiti software per la scrittura delle nostre App. Quindi: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SharePoint 2013 Preview&lt;/li&gt;&lt;li&gt;Visual Studio 2012&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-US/office/apps/fp123627" title="Microsoft Office Developer Tools for Visual Studio 2012" target="_blank"&gt;Microsoft Office Developer Tools for Visual Studio 2012&lt;/a&gt; che contengono tutti i tool ed i template utili alla costruzione di App SharePoint 2013 e Office 2013.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Fatto questo, dobbiamo preparare l'ambiente ad accogliere le nostre App. E' importante notare che questa configurazione è utile solo per la tipologia di App "SharePoint-hosted", che abbiamo visto nel &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx" title="SharePoint 2012 Apps URL" target="_blank"&gt;precedente post&lt;/a&gt;. Per le altre tipologie, ci basta installare Visual Studio 2012 e la preview di SharePoint 2013 con il servizio "App Management Service" attivato, senza dover fare ulteriori configurazioni. 
&lt;br /&gt;
&lt;br /&gt;Come &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx" title="SharePoint 2012 Apps URL" target="_blank"&gt;vi dicevo&lt;/a&gt; ogni App che sfrutta SharePoint come piattaforma di host, una volta installata su uno o più siti, viene resa disponibile agli utenti tramite una particolare URL. Quindi il primo passo di configurazione è quello di settare SharePoint in modo da poter servire queste URL, configurazione da fare una a tantum per tutte le App che abbiamo intenzione di sviluppare. L'obbiettivo finale quindi, è quello di avere delle URL di questo tipo: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://app-[APPID].apps.dev4side.com/[APPNAME]
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove "APPID" è un identificativo che viene generato da SharePoint 2013 ad ogni installazione della nostra App e "APPNAME" è il nome della mia App. Vedremo in seguito dove si trova questo nome e come possiamo modificarlo. 
&lt;br /&gt;
&lt;br /&gt;Ho scelto l'FQDN "apps.dev4side.com", per avere uno spazio di nomi separato dal resto dei miei siti SharePoint. Non c'è nessun vincolo riguardo questa scelta, è solo una questione di ordine. Avreste potuto scegliere anche solo un nome di dominio qualsiasi senza il prefisso "apps" per intenerci, senza il bisogno effettivo di esporre questi nomi su internet. 
&lt;br /&gt;
&lt;br /&gt;In fase di sviluppo, per configurare questa URL non è necessario configurare il DNS (come invece è richiesto al momento di spostarsi in produzione), perché sarà poi Visual Studio 2012 a modificare per noi il file "hosts" di Windows ad ogni deploy e ad ogni retract dell'applicazione. 
&lt;br /&gt;
&lt;br /&gt;Detto questo, dobbiamo quindi registrare la nostra URL all'interno di SharePoint. Per farlo dobbiamo prima controllare che i servizi SharePoint Administration (spadminv4) e Sharepoint Timer Service (sptimerv4) siano accesi,  
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/01.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/01s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;poi possiamo utilizzare il comando PowerShell "Set-SPAppDomain" utilizzando il tool "SharePoint 2013 Management Shell", specificando l'URL scelta. 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Set-SPAppDomain "apps.dev4side.com" 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come vi dicevo, il dominio "apps.dev4side.com" non esiste, non è necessario registrarlo in nessun provider, ne tantomeno è esposto su internet. Serve solo a me per sviluppare e a SharePoint per legare le mie App ad un gruppo di URL ben  preciso. Quando andrete in produzione, allora è compito vostro quello di registrare correttamente il nome sul DNS, configurare il firewall e fare in modo che gli utenti possano navigare senza problemi le vostre App. 
&lt;br /&gt;Tramite questo comando quindi, abbiamo appena registrato il dominio per fruire le nostre App SharePoint 2013.  
&lt;br /&gt;
&lt;br /&gt;Poi, altro requirement è dato dalla presenza del servizio "App Management Service" e dal suo stato (deve essere ovviamente "started"), così da permettere il corretto funzionamento delle App che andremo a sviluppare. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/02.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/02s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Assieme alla presenza della relativa service application e di una istanza del suo proxy. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/03.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/03s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo dobbiamo specificare un managed account di SharePoint 2013 in modo  tale da configurare correttamente l'istanza della service application "App Management Service Application" e della service application "Subscription Service Application", entrambe utili al corretto funzionamento di tutta l'architettura App-oriented  di SharePoint 2013. 
&lt;br /&gt;Per prima cosa verifichiamo che all'interno della Central Administration &gt; Security &gt; Configure Managed Accounts ci sia almeno un account da poter utilizzare. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/04.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/04s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se ne abbiamo almeno uno e lo vogliamo utilizzare anche per le service application utili al funzionamento delle App SharePoint 2013, possiamo passare ai prossimi passi. Altrimenti è necessario specificare un nuovo managed account da utilizzare attraverso il comando "New-SPManagedAccount", che ci permette di scegliere l'utente di dominio che preferiamo. 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$account = New-SPManagedAccount 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/05.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/05s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ovviamente, questa operazione può essere fatta anche tramite interfaccia grafica, all'interno della Central Administration. 
&lt;br /&gt;
&lt;br /&gt;Se invece abbiamo già un managed account che vogliamo utilizzare anche per queste service application, ci basta semplicemente recuperarlo attraverso il comando "Get-SPManagedAccount". 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$account = Get-SPManagedAccount 'DEV4SIDE\$SPSService' 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="margin-left: 10px; font-style: italic"&gt;Nota: se, come me, avete un nome utente con dei caratteri particolari che potrebbero dar fastidio alla normale sintassi di PowerShell (come per esempio il carattere dollaro), utilizzate i singoli apici per specificare il nome dell'account.&lt;/div&gt; 
&lt;br /&gt;
&lt;br /&gt;Ok, una volta recuperato l'account, possiamo utilizzarlo per configurare le due service app. Ecco lo script utile a completare la configurazione: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$appPoolSubSvc = New-SPServiceApplicationPool -Name SettingsServiceAppPool -Account $account 
&lt;br /&gt;$appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account 
&lt;br /&gt;$appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolSubSvc –Name SettingsServiceApp –DatabaseName SettingsServiceDB  
&lt;br /&gt;$proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc 
&lt;br /&gt;$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName AppServiceDB 
&lt;br /&gt;$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come ultima operazione ci basta specificare il nostro tenant name, che verrà utilizzato da SharePoint 2013 per la costruzione dell'URL di ogni App. Possiamo raggiungere questo obbiettivo lanciando il comando "Set-SPAppSiteSubscriptionName" e specificando il parametro "Name". 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Set-SPAppSiteSubscriptionName -Name "app" -Confirm:$false 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove "app" è il nostro "TENANTNAME".  
&lt;br /&gt;
&lt;br /&gt;Così facendo, da ora in poi, le nostre App avranno una URL di questo tipo: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://app-[APPID].apps.dev4side.com/[APP-NAME] 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Per verificare che la configurazione che abbiamo appena fatto è funzionante, apriamo una nuova istanza di Visual Studio 2012, creiamo una nuova App SharePoint 2013 (di tipo "SharePoint-hosted" chiaramente) e facciamo F5 (run). 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/06.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/06s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se non abbiamo alcun errore in fase di deploy e vediamo l'App all'interno del browser significa che la configurazione è corretta. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/08.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/08s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/09.jpg" title="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/ConfigureSPforAPP/09s.jpg" alt="Configurare l’ambiente per lo sviluppo di App Sharpoint-hosted in SharePoint 2013" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Le istruzioni che abbiamo appena descritto, sono le stesse riportate sulla documentazione di preview di SharePoint 2013 a questo &lt;a href="http://msdn.microsoft.com/en-us/library/fp179923(v=office.15).aspx#SP15appdevonprem_bk_configure" title="SharePoint 2013 SDK" target="_blank"&gt;indirizzo&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Attenzione però. L'articolo sulla documentazione non è completo. E' probabile che in questa configurazione per un ambiente di sviluppo, abbiate degli errori 401 (problemi di autenticazione quindi) quando cercate di accedere alle URL delle vostre App. Per risolverli seguite il metodo 2 presente all'interno di questo articolo della KB: &lt;a href="http://support.microsoft.com/kb/896861" title="Microsoft KB Disable Loopback check" target="_blank"&gt;http://support.microsoft.com/kb/896861&lt;/a&gt;  
&lt;br /&gt;
&lt;br /&gt;Se invece volete configurare l'app-domain utilizzando un DNS e simulando ancora di più un ambiente di produzione, vi consiglio di seguire questo post di Mirjam Van Olst:
&lt;br /&gt;- &lt;a href="http://www.sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx" title="Setting up your App domain for SharePoint 2013" target="_blank"&gt;http://www.sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Bene, ora siamo pronti allo sviluppo della nostra prima App! :) 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ConfigureDevelopmentEnvironmentForSharePoint2013Apps.aspx" /><issued>2012-10-12T16:4:5+01:00</issued><modified>2012-10-12T16:4:5+01:00</modified></entry><entry><title>Il nuovo &quot;App-Model&quot; di SharePoint 2013 - &quot;SharePoint-Hosted&quot; Apps URL</title><id>/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx</id><created>2012-9-11T14:51:57+01:00</created><content type="text/html" mode="escaped">Nei precedenti post, abbiamo visto una panoramica del nuovo modello orientato alle App di SharePoint 2013, delle varie tipologie di App che possiamo sviluppare e qualche prima considerazione a riguardo. Iniziamo ora ad entrare nel dettaglio di questo modello. 
&lt;br /&gt;
&lt;br /&gt;Mentre una "self-hosted" App segue le politiche dettate da voi o dal provider che vi offre l'host, per quanto riguarda la posizione dei file o dei dati, la URL con cui raggiungerla, ecc.., una App di tipo "SharePoint-hosted", scendendo ancor più nel tecnico, è rappresentata da una singola istanza di un SPWeb che viene creato (al momento dell'installazione della stessa App) come sottosito del sito corrente. A questo sito, che abbiamo ormai nominato "AppWeb", in fase di installazione, SharePoint 2013 assegna una URL un pò particolare rispetto alle altre, composta seconda la seguente regola: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://[TENANTNAME]-[APPID].[DOMAIN]/[APPNAME]
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;TENANTNAME è un nome, a nostra scelta, che dobbiamo configurare a livello di Farm&lt;/li&gt;&lt;li&gt;APPID è un identificativo univo che viene generato da SharePoint 2013 ogni volta che l'App viene installata in un particolare sito&lt;/li&gt;&lt;li&gt;DOMAIN è il vostro dominio intranet (che va prima registrato tramite PowerShell,  così da essere in grado di sviluppare le App)&lt;/li&gt;&lt;li&gt;APPNAME è l'identificativo che identifica univocamente la vostra App e che potete specificare manualmente all'interno del file XML di configurazione dell'App stessa (il nuovo "AppManifest.xml")&lt;/li&gt;&lt;/ul&gt; 
&lt;br /&gt;Un esempio di una URL per una singola APP di tipo "SharePoint-hosted" può essere quindi: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://app-0e2cc057afc55e.apps.dev4side.com/HelloWorld 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Dove "HelloWorld" è il nome che ho scelto per la nostra App, "apps.dev4side.com" è il mio dominio, "app" è il termine con cui ho deciso di gestire le URL delle varie app e "0ecc057afc55e" è una valore alfanumerico generato da SharePoint 2013 ad ogni nuova istanza (installazione) della mia App. 
&lt;br /&gt;
&lt;br /&gt;La cosa più importante da ricordarsi è che non c'è altro modo di raggiungere l'App una volta installata, se non utilizzando questa particolare URL. 
&lt;br /&gt;
&lt;br /&gt;Nel prossimo post vedremo come possiamo configurare correttamente il nostro ambiente di sviluppo per iniziare a scrivere un'App di tipo "SharePoint-hosted" e come configurare SharePoint stesso per fruire le URL relative alle App di questo tipo.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013NewAppModelPart4SharePointHostedApps.aspx" /><issued>2012-9-11T14:51:57+01:00</issued><modified>2012-9-11T14:51:57+01:00</modified></entry><entry><title>Il nuovo App-Model di SharePoint 2013: il modello di programmazione</title><id>/Blog/SharePoint2013NewAppModelPart4.aspx</id><created>2012-9-3T11:33:58+01:00</created><content type="text/html" mode="escaped">Bene, veniamo alle cose interessanti. Ogni App SharePoint 2013 vede un modello di programmazione differente in base alla propria natura. 
&lt;br /&gt;
&lt;br /&gt;La principale differenza è tra: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;le "SharePoint-Hosted" Apps: in cui non si può eseguire alcun tipo di istruzione server-side e in cui si può accedere ai contenuti del relativo AppWeb solo tramite REST o tramite Client Object Model (Silverlight o Javascript)&lt;/li&gt;&lt;li&gt;le "Cloud-Hosted" Apps: in cui possiamo utilizzare qualsiasi tipo di linguaggio server-side (perché l'applicazione non è hostata da SharePoint) e in cui possiamo accedere ai contenuti e alle funzionalità del relativo AppWeb SharePoint 2013 sempre solo tramite REST o tramite il Client Object Model (in questo caso, oltre al modello per Silverlight e Javascript, possiamo utilizzare anche le relative librerie compilate per il .NET Framework)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Quindi, come avrete capito, bisogna mettersi giù di impegno ed impararsi per bene le novità legate ai servizi esposti in modalità REST da SharePoint 2013 e il Client Object Model, entrambi notevolmente arricchiti. 
&lt;br /&gt;
&lt;br /&gt;Ecco il modello di programmazione relativo al nuovo App-Model di SharePoint 2013 rappresentato in figura: 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/sp2013/appModelProgramming.png" alt="SharePoint 2013 App Model Programming" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nel nostro caso, la parte "client" può essere una pagina HTML5 + CSS + Javascript (nel caso di una "SharePoint-Hosted" App) o un pagina ASP.NET, PHP, JSP, Ruby, ecc.. (nel caso di una "Cloud-Hosted" App). La parte "server" invece è formata da un singolo entry point: il servizio WCF che espone tutte le funzionalità alle varie librerie del Client Object Model. 
&lt;br /&gt;Per chi di voi già lavora con SharePoint 2010, dovrebbe sapere che tutte le richieste che si fanno tramite le librerie Silverlight, Javascript o .NET del Client Object Model confluiscono sul servizio all'url: /_vti_bin/client.svc, servizio che si preoccupa di ritornare i vari risultati in json per poi permettere a tali librerie di ricostruire gli oggetti richiesti dall'applicazione client. 
&lt;br /&gt;
&lt;br /&gt;Ora, questo specifico servizio è stato modificato in modo tale che un parte di esso possa essere esposta (e quindi consumabile) in modalità REST. Per semplificare le cose poi, è stato semplicemente mappato all'indirizzo "_api", il che ci permette di utilizzare parte delle funzionalità del Client Object Model, tramite delle query HTTP in modalità REST (es: per recuperare il titolo del sito corrente, basta fare una chiamata all'indirizzo "http://siteurl/_api/web/title"). Parleremo in seguito delle nuove funzionalità legate a questo servizio REST, non preoccupatevi. 
&lt;br /&gt;
&lt;br /&gt;Il servizio "listdata.svc" (che possiamo rinominare come il "vecchio servizio REST") e i web services (i vari "listdata.asmx", ecc..) sono ancora presenti, funzionanti ed utilizzabili, così da mantenere la retro-compatibilità con le applicazioni scritte per le versioni precedenti di SharePoint, ma devono comunque essere ritenuti obsoleti a favore dell'utilizzo del Client Object Model o della sua nuova interfaccia REST. Questo lo si può leggere direttamente dalle pagine della documentazione di SharePoint 2013 (&lt;a href="http://msdn.microsoft.com/en-us/library/jj164060(v=office.15).aspx" title="SharePoint 2013 Programming Model" target="_blank"&gt;qua&lt;/a&gt;, al capitolo "Depracated API sets"). 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013NewAppModelPart4.aspx" /><issued>2012-9-3T11:33:58+01:00</issued><modified>2012-9-3T11:33:58+01:00</modified></entry><entry><title>Disponibile per il download l'SDK per lo sviluppo di App SharePoint 2013 ed Office 2013</title><id>/Blog/SharePoint2013AndOffice2013SDKPreview.aspx</id><created>2012-8-24T12:46:50+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/sp2013/sp2013.png" alt="SharePoint 2013" style="margin: 10px; float:right;" /&gt;Da pochi giorni è disponibile per il download pubblico l'SDK per lo sviluppo di App su SharePoint 2013 ed Office 2013.
&lt;br /&gt;Per la precisione, lo potete scaricare direttamente da questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30721" title="Disponibile per il download l'SDK per lo sviluppo di App SharePoint 2013 e Office 2013" target="_blank"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30721&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Sono 36MB di roba, in cui troverete ben 54 esempi pratici per iniziare a sviluppare le vostre App per le nuove versioni della piattaforma di collaborazione Microsoft e del pacchetto Office.
&lt;br /&gt;Durante l'installazione verrà anche verificata la presenza sulla vostra macchina di Document Explorer, che risulta uno dei prerequisiti per l'utilizzo di alcuni dei contenuti dell'SDK. Mentre invece il path di default di installazione sarà il seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files (x86)\Microsoft SDKs\Apps for Office and SharePoint Preview\
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Vi ricordo che è in Preview anche questo SDK, fino all'uscita delle RTM dei prodotti.
&lt;br /&gt;
&lt;br /&gt;Questo SDK, va ad aggiungersi all'SDK ufficiale della Preview di SharePoint 2013, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30722" title="SharePoint 2013 Preview SDK" target="_blank"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30722&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon download! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2013.aspx" title="TAG: Office 2013"&gt;Office 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013AndOffice2013SDKPreview.aspx" /><issued>2012-8-24T12:46:50+01:00</issued><modified>2012-8-24T12:46:50+01:00</modified></entry><entry><title>Il nuovo App-Model di SharePoint 2013 - Parte 3</title><id>/Blog/SharePoint2013NewAppModelPart3.aspx</id><created>2012-8-22T19:20:13+01:00</created><content type="text/html" mode="escaped">Dopo i primi due post introduttivi sul nuovo modello "App-oriented" introdotto in SharePoint 2013 (&lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart1.aspx" title="Parte 1" target="_blank"&gt;parte 1&lt;/a&gt; e &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart2.aspx" title="Parte 2" target="_blank"&gt;parte 2&lt;/a&gt;), volevo condividere con voi un po' di considerazioni. E' da un bel po' di tempo ormai che ho a che fare con questo nuovo modello e ci sono cose che mi piacciono e cose che non mi piacciono, soprattutto a confronto dell'esperienza maturata con le precedenti versioni del prodotto. 
&lt;br /&gt;
&lt;br /&gt;La prima cosa su cui voglio far caso è la linea guida data da Microsoft all'interno delle prime pagine dell'SDK di SharePoint 2013: "Develop an app whenever you can" (qui la &lt;a href="http://msdn.microsoft.com/en-us/library/jj163114(v=office.15).aspx" title="SharePoint 2013 SDK" target="_blank"&gt;fonte&lt;/a&gt;).
&lt;br /&gt;
&lt;br /&gt;A mio avviso, questa è un'affermazione un po' troppo forte ora. Lo sviluppatore SharePoint è abituato al modello classico di sviluppo delle proprie personalizzazioni (praticamente dalla versione 2003 di SharePoint, quindi più di 10 anni fa) e prendere questa frase come legge forse è sbagliato. 
&lt;br /&gt;E' vero che ci sono un sacco di improvement dati da questo modello, perché, se ci pensate bene, stiamo dando ai nostri Farm administrator una soluzione pressoché sicura per il loro ambiente (un po' di codice javascript o un redirect ad un'altra web application, esterna a SharePoint, non possono certo nuocere a nessuno), una soluzione facile da gestire (grazie alla presenza del marketplace e dell'app catalog interno) e, soprattutto, facile da migrare da un server all'altro in caso di migrazione di SharePoint ad una nuova versione o in caso di semplice dismissione dell'attuale parco macchine. Inoltre, siamo così obbligati a pensare le nostre applicazioni per essere fruibili da differeti device, differenti piattaforme e per essere conformi agli standard attuali per quanto riguarda lo sviluppo sul web (velocità, alta user experience, assenza di postback, ecc..), il che porta le nostre soluzioni ad un livello sicuramente superiore in termini di impatto visivo e facilità d'uso per l'utente finale. Ma pensare di sostituire totalmente le Farm solution a favore dello sviluppo di un App è una follia pura. Ricordiamoci infatti che la maggior parte di questi accorgimenti li possiamo prendere anche sviluppando una Farm solution, come siamo stati abituati fin'ora. 
&lt;br /&gt;
&lt;br /&gt;Secondo me quindi, per prima cosa, è necessario capire bene l'entità della funzionalità che abbiamo bisogno di implementare, per poi decidere se utilizzare questo nuovo modello o se rimanere sul "classico". Alla fine è una scelta normale per un'applicazione web, quella di utilizzare una tecnologia o prendere particolari strade implementative in base ai requisiti che l'applicazione stessa deve soddisfare. Quindi non vi sto dicendo niente di nuovo.
&lt;br /&gt;Abbiamo bisogno di modificare fortemente SharePoint e i suoi vari componenti? Utilizzeremo una Farm solution! 
&lt;br /&gt;Abbiamo bisogno di modificare l'aspetto grafico del prodotto? Utilizzeremo una Farm solution! 
&lt;br /&gt;Abbiamo bisogno di interagire con dati e informazioni presenti in siti, site collection o web application differenti? Utilizzeremo sempre una Farm solution. 
&lt;br /&gt;
&lt;br /&gt;Questo perché le App:
&lt;br /&gt;- non hanno la possibilità di eseguire codice server-side su SharePoint (quindi non hanno la possibilità di utilizzare il classico server object model), 
&lt;br /&gt;- hanno come scope solo il proprio sito (l'AppWeb di cui parlavamo nei precedenti post),
&lt;br /&gt;- non hanno alcun tipo di accesso al sito padre o ad altri siti nella gerarchia, altre site collection o altre web application (questo è vero in parte, perchè con il Client Object Model per Javascript ad oggi si riesce ad accedere al sito padre, ma credo che toglieranno questa possibilità) 
&lt;br /&gt;- non possono quindi installare sul sito padre le nostre personalizzazioni (vedi master page, page layouts, ecc..), 
&lt;br /&gt;- non possono utilizzare tutte le tipologie di personalizzazioni che siamo abituati ora ad utilizzare all'interno delle nostre soluzioni SharePoint 2010, ma ne possono utilizzare solo una parte (vedremo nel prossimo post la lista di quelle disponibili) 
&lt;br /&gt;- non hanno la possibilità per l'utente finale di interagire con il contenuto dell'AppWeb (per capirci, non c'è possibilità di entrare in "visualizza tutto il contenuto"; a liste e document library si però) o di permettere la visualizzazione di tale contenuto dal sito padre. 
&lt;br /&gt;
&lt;br /&gt;Le App sono fantastiche per lo sviluppo di applicazioni e funzionalità mirate, che non hanno dipendenze dal "mondo SharePoint esterno", che possono essere curate a fondo per poi essere fruite da differenti browser e device fisici e per cui è possibile stabilire dei permessi sull'intera funzionalità esposta e non sul contenuto. Punto. 
&lt;br /&gt;Esempi di applicazioni di questo tipo sono le varie applicazioni di ticketing, di gestione di un progetto, di tracking, di prenotazione risorse, ecc.. (per rimanere sul classico eh, ma anche qua non c'è limite alla fantasia). 
&lt;br /&gt;
&lt;br /&gt;Quindi, quando leggete la frase "Develop an app whenever you can" pensate, come sempre, che non è Microsoft che dovrà sviluppare le vostre applicazioni SharePoint, ma siete voi e voi solo sapete qual è la via migliore da prendere per la vostra applicazione :) 
&lt;br /&gt;
&lt;br /&gt;Un'altra questione su cui vorrei fare attenzione invece sono le "Self-hosted" apps. Al contrario delle "SharePoint-hosted" apps, per cui possiamo sfruttare tutte le meraviglie e le facilitazioni che ci da la piattaforma, con questa tipologia di applicazione dobbiamo farci carico (noi e/o il provider che scegliamo per hostare le nostre applicazioni) di un po' di cose che forse ancora non avete chiare (quanto meno dalla documentazione fin'ora disponibile, non lo sono). 
&lt;br /&gt;Innanzitutto dobbiamo mantenerne la disponibilità. Il che significa che c'è un lavoro doppio per mantenere disponibili sia la farm SharePoint sia il web server che fruisce l'applicazione agli utenti finali. Se utilizziamo la stessa macchina, dobbiamo preoccuparci solo di IIS fondamentalmente, ma se scegliamo un'altra macchina o un hosting esterno, allora è tutta un'altra questione perché dobbiamo preoccuparci di applicare politiche di backup, di effettuare una gestione della memoria e del disco, di effettuare analisi degli accessi e si tutto quanto concerne la fruizione di un'applicazione web in piena regola . Poi, dobbiamo preoccuparci di fornire un meccanismo di multi-tenancy per la nostra applicazione. Questo perché, una volta messa sul marketplace o sull'app catalog interno alla farm, l'applicazione può essere installata (quindi utilizzata) da siti differenti. Il che significa che dobbiamo scrivere il codice per permettere questo utilizzo multiplo. 
&lt;br /&gt;Inoltre, dobbiamo pensare dove e, soprattutto, come salvare i dati di cui l'applicazione stessa ha bisogno per esporre le proprie funzionalità. Cose che invece, utilizzando SharePoint come piattaforma host delle nostre app, abbiamo già pronte. 
&lt;br /&gt;Queste chiaramente, sono tutte considerazioni che bisogna fare prima di immettersi nello sviluppo di una "Self-hosted" app in SharePoint 2013. 
&lt;br /&gt;
&lt;br /&gt;L'ultima cosa non riguarda proprio il modello di programmazione, ma più che altro la risposta che possono avere gli utenti finali una volta che si approcciano a questo nuovo modello. 
&lt;br /&gt;Infatti, come vi dicevo, ora è diventato tutto un'app. Se devo creare una nuova lista, faccio click sull'azione "add an app", se devo creare una nuova document library, vado sempre su "add an app", se devo utilizzare un'applicazione vera e popria, sempre su "add an app". Il che, per tutti gli utenti che sono abituati all'utilizzo di SharePoint, è probabilmente un po’ confusionario. 
&lt;br /&gt;Ho chiesto il perché di questa scelta ad Andrew Connell, durante uno dei suoi web cast riguardanti questo nuovo modello e la risposta (purtroppo) è stata: "it's a marketing decision by Microsoft". E' probabilmente una scelta azzardata, ma penso proprio che ci dobbiamo abituare al cambiamento. 
&lt;br /&gt;
&lt;br /&gt;In ogni modo.. questo nuovo modello ha certamente dei concetti e delle caratteristiche molto belle ed innovative che, assieme alla presenza del Marketplace, sono sicuramente delle cose che meritano attenzione e su cui dobbiamo prepararci per avere così le idee chiare riguardo l'ampia scelta che abbiamo noi sviluppatori SharePoint 2013 al momento di iniziare lo sviluppo di una nuova applicazione. 
&lt;br /&gt;
&lt;br /&gt;Nel frattempo, qualcuno ha già iniziato a mettere qualche bell'esempio su codeplex:
&lt;br /&gt;- &lt;a href="http://corporatenewsapp.codeplex.com/" title="CORPORATE NEWS APP FOR SHAREPOINT 2013" target="_blank"&gt;http://corporatenewsapp.codeplex.com/&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://apps.codeplex.com/" title="SharePoint 2013 App Development" target="_blank"&gt;http://apps.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013NewAppModelPart3.aspx" /><issued>2012-8-22T19:20:13+01:00</issued><modified>2012-8-22T19:20:13+01:00</modified></entry><entry><title>Il nuovo App-Model di SharePoint 2013 - Parte 2</title><id>/Blog/SharePoint2013NewAppModelPart2.aspx</id><created>2012-8-1T14:41:54+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/SP2013/appModel.png" alt="SharePoint 2013 App Model" style="float: right" /&gt;Bene, fatta questa &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013NewAppModelPart1.aspx" title="Il nuovo App-Model di SharePoint 2013 - Parte 1" target="_blank"&gt;breve premessa&lt;/a&gt;, vediamo come si presenta questo nuovo modello e quali sono le tipologie di App che possiamo sviluppare all'interno di SharePoint 2013: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;SharePoint-hosted Apps&lt;/span&gt;: applicazioni che vengono installate fisicamente su SharePoint, all'interno di un nuovo sito (SPWeb) isolato dal resto dei contenuti del sito padre in cui l'applicazione viene installata, che possono sfruttare le potenzialità del provisioning per creare site columns, content types, liste, pagine, ecc.., che sfruttano HTML/CSS per la composizione del layout grafico e Javascript per l'accesso ai dati (tramite Client Object Model o tramite REST). Questa tipologia di applicazioni eredita dall'architettura di SharePoint tutte le funzionalità di isolamento rispetto al resto del contesto, di gestione della security e di gestione del concetto di multi-tenancy.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Cloud-hosted Apps&lt;/span&gt;: che si dividono in:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Provider-hosted Apps (o Self-Hosted, o Remote-Hosted)&lt;/span&gt;: applicazioni che vengono rese disponibili da strutture totalmente al di fuori del contesto di SharePoint, per cui lo sviluppatore (o il provider) deve preoccuparsi da zero di tutte le tematiche di manutenzione, aggiornamento e disponibilità. Applicazioni la cui logica di business può essere sviluppata potenzialmente con qualsiasi tipo di linguaggio (sia client-side che server-side) e su qualsiasi tipo di piattaforma e che vedono la presenza di un token di sicurezza, assieme ad un singolo entry point su SharePoint (l'SPWeb citato prima, isolato dal resto ed opzionale) in grado di permettere la connessione con la piattaforma e l'utilizzo delle funzionalità enterprise da essa esposte, sempre tramite Client Object Model o tramite chiamate ai servizi REST. Utilizzando questa tipologia di App, lo sviluppatore è però incaricato di preoccuparsi da zero di garantire tutti i vari concetti di isolation, security e multi-tenancy.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Azure auto-hosted Apps&lt;/span&gt;: applicazioni che, una volta scaricate dal Marketplace ed installate, creano in automatico un sito web Azure, con eventualmente un database SQL Azure a supporto, in un'istanza di Azure legata all'account Office 365 tramite cui l'applicazione stessa viene scaricata. Come avrete capito quindi, questa opzione è disponibile solamente sulla nuova versione di Office 365 e non su installazioni di SharePoint 2013 on premises. Questo non significa però che non potete usare gli Azure Websites come hosting per le vostre App SharePoint, anzi.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; 
&lt;br /&gt;Quindi, tre modalità di sviluppo/deployment per la costruzione delle nostre App, da scegliere in base alla tipologia di applicazione che abbiamo intenzione di creare.  
&lt;br /&gt;
&lt;br /&gt;A mio parere, la modalità "SharePoint-hosted" è da scegliere per tutte quelle applicazioni che hanno poca logica di business e che intendono semplicemente visualizzare dati presenti su SharePoint tramite un'interfaccia con un alto livello di user-experience. Senza la potenza che ci può dare un linguaggio che viene eseguito server-side (senza nulla togliere a Javascript, fantastico per quanto riguarda l'interazione lato client), questa tipologia di App SharePoint è obbligata a limitarsi ad offrire funzionalità in cui non è presente (o in minima parte) della logica di business, sfruttando invece al massimo quello che SharePoint offre OOB in termine di liste, document library, pagine e tutto il resto. 
&lt;br /&gt;
&lt;br /&gt;Invece, per estensioni di SharePoint in cui la logica di business necessita un certo tipo di attenzione, il passo verso le "Self-hosted Apps" vedrete che sarà più che naturale. Infatti, abbiamo così la possibilità di gestire tale logica con la tecnologia server-side che più ci piace e che ci rende più produttivi, tenendo conto di un'integrazione visuale con SharePoint 2013 durante lo sviluppo della UI (a riguardo, vedremo quali sono le linee guida date da Microsoft per la composizione dell'interfaccia). L'unica preoccupazione sarà quella poi di mantenere la disponibilità dell'applicazione stessa, soprattutto a fronte dell'accesso di un certo numero di utenti. In ambienti intranet non lo vedo come un problema, ma se decidiamo di distribuire l'applicazione sul Marketplace allora forse si. Ma queste credo che siano considerazioni da fare poi. 
&lt;br /&gt;
&lt;br /&gt;Inoltre, grazie a questa nuova architettura App oriented, abbiamo anche la possibilità di far girare queste App su Office 2013 (la nuova versione di Office). Quindi arricchire i client Word, PowerPoint, Outlook, ecc.. con delle interfacce ricche, sviluppabili in HTML, assieme a delle funzionalità in grado di interagire con le caratteristiche, le strutture e i dati esposti da SharePoint. Parleremo a breve anche di questa opportunità, non preoccupatevi. 
&lt;br /&gt;
&lt;br /&gt;Nei prossimi post, cercheremo di andare avanti con questa panoramica entrando ancor più nel dettaglio di questo nuovo modello. 
&lt;br /&gt;Vi ricordo invece che, se volete vedere tutte le novità di SharePoint 2013 per noi sviluppatori e non, potete iscrivervi alla &lt;a href="http://www.sharepointconference.it/events/Future2012/" title="SharePoint Future 2012" target="_blank"&gt;SharePoint Future 2012&lt;/a&gt;. Che si terrà a Milano il 27 novembre 2012.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/events/Future2012/?utm_source=speaker&amp;utm_medium=banner&amp;utm_campaign=spread" title="SharePoint Future 2012" target="_blank"&gt;&lt;img src="/Images/spft12_Leaderboard.png" id="ctl00_logo" alt="PeppeDotNet.it"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013NewAppModelPart2.aspx" /><issued>2012-8-1T14:41:54+01:00</issued><modified>2012-8-1T14:41:54+01:00</modified></entry><entry><title>Il nuovo App-Model di SharePoint 2013 - Parte 1</title><id>/Blog/SharePoint2013NewAppModelPart1.aspx</id><created>2012-7-31T11:52:11+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/sp2013/sp2013.png" alt="SharePoint 2013" style="margin: 10px; float:right;"&gt;Come &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013Preview.aspx" title="SharePoint 2013 preview" target="_blank"&gt;vi dicevo&lt;/a&gt;, SharePoint 2013 vede moltissime novità per noi sviluppatori. Prima fra tutte, il nuovo modello App-oriented, per la costruzione di applicazioni personalizzate basate sulla piattaforma di collaborazione Microsoft. 
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 15px"&gt;&lt;b&gt;Nota&lt;/b&gt;: vi ricordo che questo post viene scritto durante la fase di Preview di SharePoint 2013 e che non è detto che rimanga tutto così com'è ora.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Questo modello va aggiunto a tutto ciò che già conosciamo noi sviluppatori SharePoint. Infatti, per fare un pò di chiarezza rispetto a quello che si legge in giro (ed anche un pò per rassicurare chi di voi ha investito tanto su SharePoint 2010), è bene notare che tutte le skill che abbiamo acquisito fin'ora per quanto riguarda lo sviluppo di personalizzazioni SharePoint, sono ancora totalmente attuali. Il modello orientato alle App è solamente un'aggiunta per dare al prodotto una nuova veste e per cercare di farlo affermare ancor di più come piattaforma applicativa a 360 gradi. Inoltre, come vedremo, capirete che avrete la possibilità di riutilizzare gran parte delle vostre conoscenze per la scrittura delle vostre App.
&lt;br /&gt;
&lt;br /&gt;In ogni modo, per fare un po’ di riepilogo sull'offerta attuale di SharePoint 2013 per noi sviluppatori, abbiamo la possibilità di utilizzare: &lt;ul&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Farm solutions&lt;/span&gt; (o soluzioni di tipo full trust): presenti dalle prime versioni di SharePoint, ci danno la possibilità di installare una personalizzazione a livello di Farm. Quindi possiamo interagire con il file system, utilizzare il set completo delle API server-side di SharePoint ed utilizzare tutti i tipi di personalizzazioni fin'ora conosciute per la scrittura delle nostre applicazioni. Insomma: controllo completo! 
&lt;br /&gt;Da questo punto di vista, oltre ad arricchire notevolmente il server object model (escludendo però tutte le novità dei vari servizi tipo BCS, Search, ecc.. che vedremo in seguito), non sono stati fatti grossi cambiamenti.
&lt;br /&gt;A mio parere, dobbiamo sicuramente continuare ad utilizzare questa tipologia di soluzione quando abbiamo la necessità di mettere in piedi applicazioni complesse, che hanno bisogno della presenza di tanti file sul file system e che estendono SharePoint in maniera veramente intrusiva. 
&lt;br /&gt;Un classico esempio di una personalizzazione che siamo obbligati a sviluppare tramite una Farm solution è sicuramente una intranet, in cui si devono fornire agli utenti finali una o più site definition, una grafica personalizzata, workflow, application page, dati presi tramite connessione al database, servizi WCF, ecc..
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Sandbox solutions&lt;/span&gt;: presenti solo da SharePoint 2010 e sfruttate per lo più su SharePoint Online (Office 365), ci danno la possibilità di scrivere personalizzazioni che girano in un contesto ben delimitato, con un set altrettanto limitato di API server-side. Anche in questo caso, sono stati fatti veramente pochissimi improvement a questa tipologia di soluzioni che, secondo me, verranno utilizzate sempre meno. 
&lt;br /&gt;Addirittura, nelle pagine attuali della documentazione, c'è scritto che in SharePoint 2013 le sandbox solutions sono state deprecate (&lt;a href="http://msdn.microsoft.com/en-us/library/jj163114(v=office.15).aspx" title="Sandbox solutions in SharePoint 2013" target="_blank"&gt;vedi qua&lt;/a&gt;), anche se vi assicuro che è un errore di contenuto. Le sandbox solution devono considerarsi deprecate solamente a favore dello sviluppo di App, ma continuano comunque ad essere disponibili in SharePoint 2013 e in SharePoint Online 2013. 
&lt;br /&gt;In ogni caso, prendete sempre con le pinze queste scritte perché sono sicuramente soggette a cambiamento.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Apps&lt;/span&gt;: disponibili SOLO su SharePoint 2013, ci danno la possibilità di scrivere specifiche applicazioni basate sugli standard web del momento (quindi HTML5, CSS, Javascript, OAuth, OData, ecc..), in grado di interagire con gran parte delle funzionalità enterprise che mette a disposizione SharePoint stesso, supportando così l'ambia gamma di dispositivi fissi o mobili presenti attualmente sul mercato ed estendendo la possibilità di integrazione anche a tutte le altre piattaforme, gli altri linguaggi e, più in generale, a tutti gli sviluppatori che normalmente rimanevano esclusi dal mondo SharePoint.
&lt;br /&gt;Questo significa quindi che non abbiamo accesso al modello ad oggetti server-side di SharePoint per la scrittura dell'applicazione (vi prego, non vi spaventate eh :), ma contenuti e funzionalità del prodotto possono essere sfruttati all'interno dell'applicazione stessa tramite il Client Object Model (su cui è stato fatto veramente un lavoro notevole) o tramite i servizi REST (anche loro ampiamente evoluti). 
&lt;br /&gt;Assieme a tutto ciò, le proprie App potranno essere rese disponibili a tutti su un Markteplace, visibile a livello mondiale e previa verifica da parte di Microsoft ovviamente, o su un App catalog interno alla Farm, in grado di contenere le vostre App ed esporle alle varie web application, site collection e ai vari singoli siti.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Riguardo quindi questa nuova possibilità, come prima cosa secondo me è molto importante capire che questa nuova tipologia di personalizzazione di SharePoint deve essere vista e sfruttata per lo sviluppo di applicazioni che hanno un fine pratico ben preciso. Che risolvono un problema o che espongono una funzionalità puntuale. Un esempio lampante può essere la classica applicazione di richiesta ferie/permessi (giusto per farvi capire). Totalmente isolata rispetto al resto, che espone una singola funzionalità, con la possibilità di aver permessi a sé stanti e la necessità di essere fruibile tramite pc, tablet e cellulare, in modo da permettere anche a chi è fuori ufficio di fare richiesta per le proprie ferie. 
&lt;br /&gt;Se dobbiamo invece modificare intensamente SharePoint, o abbiamo bisogno di alcune funzionalità esposte solamente dal modello ad oggetti server-side oppure, semplicemente, siamo più produttivi sviluppando una soluzione classica, sappiate che nessuno ce lo sta vietando. 
&lt;br /&gt;
&lt;br /&gt;Per cercare di spiegarvi ancor meglio di che si tratta quando si parla di App SharePoint ed anticiparvi alcuni dei vantaggi, pensate a tutte quelle applicazioni che vi è capitato di sviluppare esternamente a SharePoint stesso, ma che sfruttavano le sue funzionalità, le sue strutture, i suoi dati. Esternamente, perché magari volevate sfruttare il nuovo .NET Framework o perché magari avevate skill più forti su ASP.NET o perché avevate dei vincoli architetturali che non vi permettevano di installare soluzioni server-side all'interno della Farm. Applicazioni di questo tipo, ad oggi, erano totalmente staccate da SharePoint (proprio nel senso "fisico" del termine) e ne potevano sfruttare le funzionalità solo tramite chiamate ai web services esposti o, dalla versione 2010, tramite il Client Object Model. 
&lt;br /&gt;Con SharePoint 2013, abbiamo invece un'architettura ben precisa a supporto dello sviluppo di questo tipo di applicazioni. Se ci pensate bene poi, personalizzazioni di questo tipo, a fronte di una migrazione di SharePoint potevano essere a loro volta migrate ma con minimo sforzo rispetto al lavoro che invece si deve fare per migrare una Farm solution. 
&lt;br /&gt;
&lt;br /&gt;Capiamoci bene però. Non sto dicendo che le App ora sono oro colato e il resto è diventato merda in un secondo.. anzi! 
&lt;br /&gt;Dico solo che avrete modo di capirne le potenzialità e, soprattutto, capire quando scrivere un App oppure quando sfruttare una Farm solution. Parleremo di questo sicuramente in seguito, perché è un argomento molto importante. 
&lt;br /&gt;
&lt;br /&gt;Poi, il fatto che la nomeclatura generale per la rappresentazione di singole istanze si liste e document library sia cambiata (ora per creare una nuova lista di contatti, per esempio, si deve fare click sul bottone "add an app" e poi scegliere l'app relativa) è una cosa che anche a me non è piaciuta, più che altro perchè crea confusione con questo nuovo modello di soluzioni. Le app sono una cosa... liste, document library e web part sono un altra.
&lt;br /&gt;Quindi occhio a non fare confusione.
&lt;br /&gt;
&lt;br /&gt;Dopo questa breve introduzione, continueremo nei prossimi post ad esplorare questo nuovo modello di programmazione fornito da SharePoint 2013.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013NewAppModelPart1.aspx" /><issued>2012-7-31T11:52:11+01:00</issued><modified>2012-7-31T11:52:11+01:00</modified></entry><entry><title>Siti online per iscriversi a SharePoint Future 2012 e SharePoint Conference 2013</title><id>/Blog/SharePointFuture2012SharePointConference2013.aspx</id><created>2012-7-25T17:56:5+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/spft12_MediumRectangle.png" alt="SharePoint Future 2013" style="float:right; margin: 10px" /&gt;La data la &lt;a href="http://www.peppedotnet.it/Blog/SharePonitFutureAboutSharePoint15.aspx" title="27 novembre 2012: SharePoint 15! SharePoint non sarà più lo stesso" target="_blank"&gt;sapevate&lt;/a&gt; già. Da ieri però, è online il sito, il che significa che potete finalmente iscrivervi alla prima conferenza in Italia sulla nuova versione di SharePoint: &lt;a href="http://www.sharepointfuture.it" title="SharePoint Future 2012" target="_blank"&gt;SharePoint Future 2012&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Come? Semplicemente utilizzando l'indirizzo:
&lt;br /&gt;- &lt;a href="http://www.sharepointfuture.it" title="SharePoint Future 2012" target="_blank"&gt;http://www.sharepointfuture.it&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;La conferenza sarà tenuta presso l'Enterprise Hotel a Milano (in corso sempione), il 27 novembre 2012, ed ha un costo di 99 euro (IVA esclusa).
&lt;br /&gt;Durante l'intera giornata avrete la possibilità di vedere le anticipazioni della nuova versione del prodotto, attualmente in fase di preview pubblica, passando da un'overview generale delle novità per gli utenti, alle novità sulla ricerca e sulla parte di Content Management, per poi passare alle novità per noi DEV e a quelle per gli IT PRO.
&lt;br /&gt;Una giornata parecchio intensa quindi.
&lt;br /&gt;
&lt;br /&gt;La novità quest'anno, è che i primi 100 di voi che si iscrivono alla &lt;a href="http://www.sharepointconference.it/events/2013" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt; entreranno GRATIS alla prossima SharePoint Future. La SharePoint Conference 2013 è sicuramente l'evento formativo più importante su SharePoint in Italia, con oltre 60 sessioni, che si terrà il 5, 6, 7 Marzo 2013 e che attualmente ha un prezzo (in Super Early Bird) di 699 euro e per cui potete iscrivervi fin da ora.
&lt;br /&gt;
&lt;br /&gt;Il sito è andato online ieri e, ora che sto scrivendo questo post, qualcuno si è già acchiappato i primi 6 posti. Non vi dico altro..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Future.aspx" title="TAG: SharePoint Future"&gt;SharePoint Future&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointFuture2012SharePointConference2013.aspx" /><issued>2012-7-25T17:56:5+01:00</issued><modified>2012-7-25T17:56:5+01:00</modified></entry><entry><title>Minimal Download Strategy in SharePoint 2013</title><id>/Blog/SharePoint2013MDS.aspx</id><created>2012-7-20T15:6:48+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/sp2013/sp2013.png" alt="SharePoint 2013" style="margin: 10px; float:right;" /&gt;Una delle novità dell'interfaccia di SharePoint 2013 è il componente denominato &lt;span style="text-decoration: underline"&gt;"Minimal Download Strategy"&lt;/span&gt; (che da ora in poi chiameremo MDS). Questo componente è un vero e proprio framework di navigazione, che fa uso sia di tecnologie server-side che di script client-side, in grado di aumentare notevolmente le performance al load delle informazioni di ogni pagina di SharePoint (comprese quelle di amministrazione) e di rendere ogni pagina dei nostri siti SharePoint molto più simile ad una vera e propria Rich Internet Application, minimizzando l'utilizzo dei post-back nelle pagine e renderizzando il contenuto tramite una piccola animazione. 
&lt;br /&gt;
&lt;br /&gt;L'MDS, disponibile all'interno dei template di sito di tipo: "Team", "Community", "Wiki", "Projects", "App" e "Blog", raggiunge il proprio obbiettivo scaricando dal server solamente la porzione di pagina il cui contenuto subisce effettivamente un cambiamento, rispetto al resto della pagina. Il meccanismo è stato implementato attraverso la scrittura di un "download manger" in grado di capire quali controlli e/o quali content placeholder presenti nella master page utilizzata dal vostro sito SharePoint 2013, hanno la necessità di essere aggiornati in base a quello che l'utente finale ha richiesto. Questo significa che eventuali controlli o master page personalizzate, dovranno supportare l'MDS se vogliono trarre vantaggio dalle sue funzionalità in fase di navigazione. 
&lt;br /&gt;
&lt;br /&gt;Questo componente di gestione del download minimale di contenuto, è presente all'interno dell'application page "start.aspx", presente all'interno della directory "LAYOUTS" e di conseguenza disponibile per tutti i siti SharePoint 2013. La pagina "start.aspx" viene infatti utilizzata per l'intera navigazione dei nostri siti SharePoint 2013, prendendo come parametro di querystring la pagina richiesta dall'utente. Infatti, per vedere l'MDS in azione, oltre a notare l'animazione presente di default al load di ogni pagina di un sito SharePoint 2013 (creato con uno dei template sopracitati) e ad ogni click su qualche link presente nell'intefaccia utente, è possibile controllare l'URL. Infatti, ogni pagina del sito può essere reggiunta utilizzando un'ancora a rappresentare l'indirizzo relativo della pagina vera e propria che dovrà essere effettivamente richiesta al server. Ecco quindi che la classica home di un sito creato a partire dal template "Team site", ha il seguente indirizzo: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://sp2013/_layouts/15/start.aspx#/SitePages/Home.aspx
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo indirizzo dice all'MDS quale pagina caricara. Internamente il download manager conosce qual'è il contenuto della pagina che può variare rispetto al resto e lo presenta all'utente. Questo meccanismo, abilitato di default su tutti i siti SharePoint 2013 creati con uno dei template sopracitati, può essere anche disabilitato a livello di singolo sito. Per farlo, abbiamo a disposizione la proprietà &lt;span style="text-decoration: underline"&gt;EnableMinimalDownload&lt;/span&gt; all'interno della classe &lt;span style="text-decoration: underline"&gt;SPWeb&lt;/span&gt;, proprietà che possiamo valorizzare sia tramite server object model, che tramite Powershell. 
&lt;br /&gt;
&lt;br /&gt;Ecco l'estratto di codice Powershell per disabilitare l'azione del componente MDS su un particolare sito SharePoint 2013: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$site = New-Object Microsoft.SharePoint.SPSite(&lt;span style="color: #A31515"&gt;"http://sp2013/TestMDS"&lt;/span&gt;) 
&lt;br /&gt;$web = $site.OpenWeb() 
&lt;br /&gt;$web.EnableMinimalDownload = $&lt;span style="color: #0000FF"&gt;false&lt;/span&gt; 
&lt;br /&gt;$web.Update()&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se vogliamo invece, possiamo modificare questo comportamento anche da remoto. Ecco l'estratto di codice che dobbiamo utilizzare nel caso di un applicazione che si avvantaggia del Client Object Model di SharePoint 2013: 
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (ClientContext context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ClientContext(&lt;span style="color: #A31515"&gt;"http://sp2013/TestMDS"&lt;/span&gt;)) 
&lt;br /&gt;{ 
&lt;br /&gt;    Web web = context.Web; 
&lt;br /&gt;    web.EnableMinimalDownload = enable; 
&lt;br /&gt;    context.ExecuteQuery(); 
&lt;br /&gt;} &lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una volta disabilitato, tutti i link presenti nell'interfaccia del vostro sito SharePoint 2013 verranno renderizzati senza l'utilizzo della pagina "start.aspx", come eravamo abituati nella precedente versione del prodotto. 
&lt;br /&gt;
&lt;br /&gt;Il consiglio è di disabilitare questo comportamento solo se in conflitto con le vostre applicazioni custom. 
&lt;br /&gt;Se volete informazioni più dettagliate sull’argomento, vi rimando a questi post: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.wictorwilen.se/sharepoint-2013---introduction-to-the-minimal-download-strategy-mds" title="Introductino to minimal download strategy" target="_blank"&gt;http://www.wictorwilen.se/sharepoint-2013---introduction-to-the-minimal-download-strategy-mds&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.furuknap.net/minimal-download-strategy-in-sharepoint-2013" title="Minimal download strategy in SharePoint 2013" target="_blank"&gt;http://blog.furuknap.net/minimal-download-strategy-in-sharepoint-2013&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013MDS.aspx" /><issued>2012-7-20T15:6:48+01:00</issued><modified>2012-7-20T15:6:48+01:00</modified></entry><entry><title>SharePoint 2013 preview software requirements: .NET Framework 4.5!</title><id>/Blog/SharePoint2013SoftwareRequirementsNET45.aspx</id><created>2012-7-17T10:39:51+01:00</created><content type="text/html" mode="escaped">E' sicuramente la prima novità per noi sviluppatori. 
&lt;br /&gt;(Per fortuna) SharePoint 2013 gira sopra il &lt;span style="text-decoration: underline"&gt;.NET Framework 4.5&lt;/span&gt;, attualmente in versione RC e che verrà presto rilasciato assieme a Visual Studio 2012 e Windows 8.
&lt;br /&gt;Lo potete vedere sia direttamente dalle pagine della documentazione tecnica per quanto riguarda i requirements hardware e software della &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2013Preview.aspx" title="SharePoint 2013 Preview is here"&gt;preview&lt;/a&gt; della nuova versione del prodotto di collaborazione Microsoft:
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/en-us/library/cc262485(office.15).aspx" title="SharePoint 2013 preview hardware and software requirements" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc262485(office.15).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;sia dalla schermata di installazione dei pre-requisiti:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SP2013/01-prerequisites-a.png" alt="SharePoint 2013 preview software requirements: .NET Framework 4.5!" /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SP2013/03-prerequistes-45.png" alt="SharePoint 2013 preview software requirements: .NET Framework 4.5!" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013SoftwareRequirementsNET45.aspx" /><issued>2012-7-17T10:39:51+01:00</issued><modified>2012-7-17T10:39:51+01:00</modified></entry><entry><title>SharePoint 2013 preview is here!</title><id>/Blog/SharePoint2013Preview.aspx</id><created>2012-7-16T23:12:3+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin: 10px; float: right"&gt;&lt;img src="http://www.peppedotnet.it/images/office15.jpg" alt="SharePoint 2013" /&gt;&lt;/div&gt;Ragazzi... ci siamo per davvero!
&lt;br /&gt;Da oggi, assieme alla nuova versione di Office, è disponibile la prima preview della nuova versione di SharePoint, che avrà il nome di "SharePoint 2013".
&lt;br /&gt;Potete scaricare le immagini della preview tramite i seguenti indirizzi:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30345" title="SharePoint Foundation 2013" target="_blank"&gt;SharePoint Foundation 2013 Preview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-US/evalcenter/hh973397" title="SharePoint Server 2013 Preview" target="_blank"&gt;SharePoint Server 2013 Preview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30346" title="SharePoint Designer 2013 Preview" target="_blank"&gt;SharePoint Designer 2013 Preview&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Le novità sono veramente tante, sia per noi sviluppatori che per gli IT Pro e Information Workers, il che significa che da ora in poi avrete di che leggere, studiare, testare, ecc.. :)
&lt;br /&gt;
&lt;br /&gt;A mio avviso, a parte i cambiamenti grafici fatti in modo da rimanere "al passo coi tempi", sulla scia di Windows 8, Windows Phone, ecc.. la novità che da più all'occhio è sicuramente il MarketPlace, disponibile (in preview) già da ora seguendo questo indirizzo:
&lt;br /&gt;- &lt;a href="http://officepreview.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx" title="SharePoint 2013 Marketplace" target="_blank"&gt;http://officepreview.microsoft.com/en-us/store/apps-for-sharepoint-FX102804987.aspx&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;Si, avete capito bene, gli utenti amministratori che utilizzeranno SharePoint 2013 avranno la possibilità di cercare, installare ed usufruire di applicazioni, gratuite o a pagamento, presenti all'interno di un unico storage condiviso al quale possono partecipare tutti gli sviluppatori del mondo o da uno storage interno all'azienda e gestito sempre dal Farm Admin.
&lt;br /&gt;Direttamente dai cellulari infatti, arriva anche su SharePoint il concetto di "App", il che è davvero una bella novità ed un bel passo in avanti per il prodotto di collaborazione, perchè gli utenti finali hanno la possibilità di utilizzare applicazioni pre-confezionate, testate e certificate da Microsoft, all'interno della propria struttura intranet e, in parallelo, tutto l'ecosistema di noi sviluppatori potrà usufruire di tutto un nuovo set di librerie, tool e funzionalità da poter utilizzare per inserire le proprie applicaizoni all’interno del MarketPlace e, magari, portare a casa anche qualche soldino :)
&lt;br /&gt;Calma però. Avremo tempo e modo per parlarne bene, perchè il nuovo modello orientato alle App va capito, digerito ed utilizzato con coscienza.
&lt;br /&gt;
&lt;br /&gt;Inoltre, altra grande novità legata all’introduzione del concetto di App in SharePoint 2013, è data dal programma "Agave" (codename attuale, non sappiamo se verrà mantenuto), che permette ai vari client di Office 2013 di visualizzare direttamente all'interno delle proprie aree di lavoro, le medesime (o quasi) applicazioni che possono essere prelevate dal MarketPlace e sfruttare quindi quella che è la user experience di potenti applicazioni web, sviluppate utilizzando le ultime tecnologie del momento (HTML5, Javascript, CSS 3, ecc..). Il che significa che, per esempio, che possiamo sfruttare informazioni presenti all’interno di SharePoint, presentate tramite animazioni CSS 3, per arricchire la creazione di un semplice documento Word.
&lt;br /&gt;Avremo sicuramente l’occasione di parlare di tutto ciò a fondo, non preoccupatevi.
&lt;br /&gt;
&lt;br /&gt;Detto questo, preparatevi ulteriormente perchè SharePoint 2013 è diventato un prodotto totalmente orientato al social. E’ stato investito molto da parte di Microsoft per cercare di aggiungere tutte quelle funzionalità in grado di migliorare e facilitare le attività di community all’interno dell'azienda. Imparando dai grandi, sono state aggiunte infatti funzionalità di "following" (non solo di utenti e delle loro attività, ma anche di siti, liste, documenti), algoritmi per definire la "reputazione" di un utente all'interno della community, funzionalità di microblogging, menzioni, sharing di informazioni personali come documenti, siti, tag, ecc.., un nuovo template per la gestione delle community interne, assieme a delle modifiche sostanziali al "My site", fulcro di tutte le attività social di un utente fatte su SharePoint 2013.
&lt;br /&gt;
&lt;br /&gt;Altri sforzi, davvero importanti, sono stati fatti anche sui Business Connectivity Services e, più in generale, su tutti i tool/funzionalità legati alla Business Intelligence. Sia per quanto riguarda le performance (punto dolente della versione attuale dei BCS), sia per quanto riguarda l'autenticazione (è supportata infatti una nuova fonte di dati per i BCS, basata su OData), sia per quanto riguarda l'integrazione con il mondo delle App.
&lt;br /&gt;
&lt;br /&gt;La UI invece, come vi dicevo, è stata modificata per rispondere alle "mode" del momento, utilizzando HTML5 e CSS 3 dove possibile. A riguardo, è stato innanzitutto aggiunto tutto un nuovo meccanismo per il loading del rendering grafico di ogni sezione, molto efficace, che possiamo decidere di abilitare o disabilitare a piacimento. Ne parleremo a breve.
&lt;br /&gt;Poi, è stato modificato il framework di branding, fornendo ai Web Designer un nuovo tool in grado di permettere la modifica del layout di SharePoint 2013 sfruttando i suoi tool preferiti e le sue conoscenze di HTML, CSS e grafica orientata al web.
&lt;br /&gt;
&lt;br /&gt;Anche la parte mobile è stata modificata. E’ stata ottimizzata l'esperienza utente per quanto riguarda la navigazione dei contenuti, che in questi tempi direi che è stata quasi una scelta obbligata, assieme all'aggiunta di un meccanismo di redirect in base alla tipologia di dispositivo che si accinge ad accedere a SharePoint 2013. Inoltre, è stato fatto un grosso lavoro per portare le Office Web Apps sulla visualizzazione mobile (con i relativi limiti). Questo significa che possiamo visualizzare documenti Word, Excel e PowerPoint direttamente dal browser del nostro dispositivo mobile.
&lt;br /&gt;
&lt;br /&gt;Tutti questi cambiamenti poi, dal punto di vista di uno sviluppatore, si riflettono all'interno dei vari modelli ad oggetti, con nuovi namespace, nuove classi, proprietà, metodi.. utili a sfruttare le nuove funzionalità del prodotto direttamente dalle nostre applicaizoni.
&lt;br /&gt;Vedremo infatti che il Client Object Model è stato notevolmente arricchito di funzionalità. Sono state coperte le principali mancanze attuali ed è stato allargato anche il campo d'azione. Ora, infatti, possiamo usufruire dalle nostre applicazioni remote (client-side) delle funzionalità di SharePoint 2013 legate alla ricerca, allo user profile service, al publishing, alla taxonomy, ai business connectivity services e ai documenti. Lo stesso vale per il Server Object Model, adeguato per permettere la gestione delle App e di tutte le altre nuove funzionalità.
&lt;br /&gt;Inoltre, è da notare che è stato fatto veramente un grosso lavoro per quanto riguarda l’interfaccia REST di SharePoint 2013, con la presenza di un nuovo servizio, molto potente, legato a quelle che sono le nostre conoscenze attuali del Client Object Model. Vedremo degli esempi di utilizzo a breve.
&lt;br /&gt;
&lt;br /&gt;Guardando i "bassifondi" architetturali invece, non meno importanti del resto.. anzi, dovete sapere che SharePoint 2013 vede tantissime novità e cambiamenti, a partire da un nuovo sistema per la gestione delle richieste HTTP, un nuovo meccanismo di caching basato su AppFabric, l'integrazione totale con le regole del protocollo OAuth, modifiche sostanziali all’architettura di ricerca, nuove service applications, novità riguardo il mapping degli hostnames e la gestione generale delle URL di siti e liste, modifiche all'architettura di publishing, un nuovo sistema di push dei contenuti e di notifiche e nuove funzionalità all'interno dell’architettura dei Workflow (basata sulle novità di Workflow Foundation del .NET Framework 4).
&lt;br /&gt;Ne ho dette un pò delle novità architetturali.. e già così son tante :)
&lt;br /&gt;
&lt;br /&gt;Ultimo, ma non per importanza ovviamente, l'upgrade da versioni precedenti.
&lt;br /&gt;Trovate già ora, sulla piattaforma di download di Microsoft, le politiche che sono state pensate per l'upgrade al nuovo prodotto:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30371" title="Upgrade to SharePoint 2013" target="_blank"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30371&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30366" title="Upgrade to SharePoint 2013" target="_blank"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30366&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; 
&lt;br /&gt;Riguardo il licensing, ancora non abbiamo notizie ufficiali ma (come avrete visto) è stata comunque mantenuta la versione "Foundation" come core (che dovrebbe essere mantenuta grauita assieme alle CAL di Windows Server) e la versione "Server" per le funzionalità più enterprise.
&lt;br /&gt;
&lt;br /&gt;Quindi, cerchiamo di concludere.. :)
&lt;br /&gt;Questa di oggi, come chiaro che sia, è solo una breve infarinatura di alcune delle novità del prodotto.  Prendete con le pinze gran parte delle mie scritte perchè non è detto che le cose rimangano in questo modo dalla preview di oggi, alla release.
&lt;br /&gt;Piano piano poi, cercherò di approfondire tutto quanto e di tenervi aggiornati. Sia tramite il mio blog, che tramite &lt;a href="" title="" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt;, ma soprattutto attraverso i due grandi eventi su SharePoint che si terranno in Italia alla fine del 2012 e all’inizio del 2013, eventi formativi fondamentali per chi si vuole avvicinare alla nuova versione del prodotto:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/Future2012/default.aspx" title="SharePoint Future 2012" target="_blank"&gt;SharePoint Future 2012&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2013/default.aspx" title="SharePoint Conference 2013" target="_blank"&gt;SharePoint Conference 2013&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Come avrete capito.. non sto nella pelle! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2013.aspx" title="TAG: SharePoint 2013"&gt;SharePoint 2013&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2013Preview.aspx" /><issued>2012-7-16T23:12:3+01:00</issued><modified>2012-7-16T23:12:3+01:00</modified></entry><entry><title>MS12-050 Security Patch per SharePoint 2010</title><id>/Blog/MS12-050SecurityPatchForSharePoint2010.aspx</id><created>2012-7-11T8:20:18+01:00</created><content type="text/html" mode="escaped">Ieri, 10 luglio 2012, Microsoft ha rilasciato la patch MS12-050 all'interno del suo bollettino, patch che risolve un possibile buco di sicurezza su SharePoint 2010.
&lt;br /&gt;La patch verrà installata in automatico tramite gli aggiornamenti di Windows.
&lt;br /&gt;Se voltete informazioni più dettagliate, questo è il bollettino pubblicato da Microsoft:
&lt;br /&gt;- &lt;a href="http://support.microsoft.com/kb/2695502/en-us?spid=14973" title="MS12-050 Security Patch per SharePoint 2010" target="_blank"&gt;http://support.microsoft.com/kb/2695502/en-us?spid=14973&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Sembra che questo fix sia già applicato all'interno delle CU di Aprile e di Giugno, quindi dovrebbero essere interessati solo quelli che hanno aggiornato la propia farm solo al Service Pack 1.
&lt;br /&gt;In ogni caso, dopo averla installata, ricordatevi di lanciare il Configuration Wizard su tutte le macchine SharePoint della vostra farm.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Patch.aspx" title="TAG: Patch"&gt;Patch&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MS12-050SecurityPatchForSharePoint2010.aspx" /><issued>2012-7-11T8:20:18+01:00</issued><modified>2012-7-11T8:20:18+01:00</modified></entry><entry><title>Microsoft SharePoint MVP per il terzo anno di fila</title><id>/Blog/MicrosoftSharePointMVPThirdYearInARow.aspx</id><created>2012-7-1T19:12:7+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 10px; float: right;" alt="Microsoft SharePoint MVP" src="http://www.peppedotnet.it/Images/mvp2.jpg" /&gt;Ci risiamo.. per me il primo luglio è ormai una data particolare. Che aspetto di &lt;a href="http://www.peppedotnet.it/Blog/MicrosoftSharePointMVP.aspx" title="Primo anno da MVP" target="_blank"&gt;anno&lt;/a&gt; in &lt;a href="http://www.peppedotnet.it/Blog/MicrosoftSharePointMVPSecondYearInArow.aspx" title="Secondo anno da MVP" target="_blank"&gt;anno&lt;/a&gt;, con gioia, curiosità e un leggero terrore :)
&lt;br /&gt;E' particolare perchè è dal primo luglio che parte, se qualcuno lo vuole, il mio anno da MVP su SharePoint.
&lt;br /&gt;Bene, oggi parte il mio terzo anno di fila da MVP e sono veramente felice di scriverlo.
&lt;br /&gt;Felice perchè questi anni mi hanno dato la possibilità di fare e ricevere tantissime cose. Ho incontrato un sacco di belle persone, con cui ho instaurato delle belle amicizie e da cui ho imparato e imparo tutt'ora davvero tanto.
&lt;br /&gt;Penso che questo è un programma veramente particolare, perchè permette di fare questo ed altro.
&lt;br /&gt;Penso che vada curato e gestito col cuore e con occhio tecnico. E penso che &lt;a href="http://belead.me/" title="ALessandro Teglia" target="_blank"&gt;Ale&lt;/a&gt; lo stia facendo benissimo.
&lt;br /&gt;
&lt;br /&gt;Per il resto, un GRAZIE a tutti. Di cuore, a chi è con me tutti i giorni.
&lt;br /&gt;Vado a vedere l'Italia va.. ;)
&lt;br /&gt;
&lt;br /&gt;Peppe
&lt;br /&gt;</content><link rel="alternate" type="text/html" href="/Blog/MicrosoftSharePointMVPThirdYearInARow.aspx" /><issued>2012-7-1T19:12:7+01:00</issued><modified>2012-7-1T19:12:7+01:00</modified></entry><entry><title>SharePoint 2010, Real World Solutions - Slide</title><id>/Blog/SharePoint2010RealWorldSolutionsSlides.aspx</id><created>2012-7-1T18:29:45+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin-left: 10px; float: right;"&gt;&lt;a title="SharePointCommunity.it - La community italiana per i professionisti SharePoint" href="http://www.sharepointcommunity.it" target="_blank"&gt;&lt;img alt="SharePointCommunity.it - La community italiana per i professionisti SharePoint" src="http://www.peppedotnet.it/Images/spCommunity.jpg"&gt;&lt;/a&gt;&lt;/div&gt;Ciao a tutti!
&lt;br /&gt;Per chi non è venuto lo scorso 27 giugno in Microsoft Italia, sono disponibili le slide dell'evento &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010RealWorldSolutionsMilano27Giugno2012.aspx" title="SharePoint 2010 Real World Solutions" target="_blank"&gt;SharePoint 2010 Real World Solutions&lt;/a&gt; sul sito della community.
&lt;br /&gt;Precisamente a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/documents/Presentations/Forms/AllItems.aspx" title="SharePointCommunity.it - presentazioni" target="_blank"&gt;http://www.sharepointcommunity.it/documents/Presentations/Forms/AllItems.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Qua, potete trovare le mie:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="width:425px" id="__ss_13508429"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/PeppeDotNet/sp-real-world-solutions-field-permissions" title="Sp real world solutions - field permissions" target="_blank"&gt;Sp real world solutions - field permissions&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/13508429" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0" allowfullscreen&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank"&gt;PowerPoint&lt;/a&gt; from &lt;a href="http://www.slideshare.net/PeppeDotNet" target="_blank"&gt;Giuseppe Marchi&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;E' stata veramente una bella mezza giornata. C'erano una trentina di sharepointers accaniti :) con cui abbiamo potuto chiacchierare, condividere esperienze e bere una bella birra fresca, ovverta da &lt;a href="http://www.avepoint.com/" title="AvePoint" target="_blank"&gt;Avepoint&lt;/a&gt;.
&lt;br /&gt;Un grazie ad &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, per l'organizzazione.
&lt;br /&gt;Speriamo di poterne organizzare uno nuovo a breve.
&lt;br /&gt;Se avete idee e/o proposte, scriveteci pure ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RealWorldSolutionsSlides.aspx" /><issued>2012-7-1T18:29:45+01:00</issued><modified>2012-7-1T18:29:45+01:00</modified></entry><entry><title>SharePoint 2010, Real World Solutions - Milano, 27 giugno 2012</title><id>/Blog/SharePoint2010RealWorldSolutionsMilano27Giugno2012.aspx</id><created>2012-6-20T13:9:34+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin-left: 10px; float: right;"&gt;&lt;a title="SharePointCommunity.it - La community italiana per i professionisti SharePoint" href="http://www.sharepointcommunity.it" target="_blank"&gt;&lt;img alt="SharePointCommunity.it - La community italiana per i professionisti SharePoint" src="http://www.peppedotnet.it/Images/spCommunity.jpg"&gt;&lt;/a&gt;&lt;/div&gt;Mercoledì 27 giugno 2012, si terrà un nuovo evento organizzato da &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; ed incentrato su dei casi reali in cui è stato utilizzato SharePoint come piattaforma applicativa.
&lt;br /&gt;La location sarà la nuova sede di Microsoft Italia a Peschiera Borromeo e l'evento avrà una durata di mezza giornata, nel pomeriggio.
&lt;br /&gt;
&lt;br /&gt;In queste ore, con delle sessioni "light" di mezz'ora ciascuna, avrete la possibilità di vedere come è stato sfruttato e personalizzato SharePoint 2010 per affrontare dei problemi reali che sono emersi durante progetti altrettanto reali, su clienti ancor più reali :)
&lt;br /&gt;Tra gli speaker ci sarò anche io, assieme ad &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt; e &lt;a href="http://blogs.ugidotnet.org/SalvoDiFazio/" title="Salvatore Di Fazio" target="_blank"&gt;Salvatore&lt;/a&gt;, per parlarvi di una soluzione che ho proposto a diversi clienti e che risolve uno dei problemi che da sempre è presente su SharePoint: la mancanza di un meccanismo di gestione dei permessi a livello di singolo campo.
&lt;br /&gt;Come capirete bene, è una soluzione piuttosto interessante.
&lt;br /&gt;
&lt;br /&gt;Intanto vi lascio qui l'agenda dell'evento:
&lt;br /&gt;
&lt;br /&gt;14.15-14.30 - Registrazione
&lt;br /&gt;14.30-14-45 - Benvenuto (Igor Macori e Salvatore Di Fazio)
&lt;br /&gt;14.45-15.15 - Incrementare l’efficienza delle organizzazioni attraverso l’automazione dei processi (Igor Macori)
&lt;br /&gt;15.15-15.45 - Digital Marketing e Socialità: SharePoint 2010 è anche un CMS Web 2.0 (Salvatore Di Fazio)
&lt;br /&gt;15.45-16.00 - Break
&lt;br /&gt;16.00-16.30 - Utilizzare SharePoint come Portale per Clienti e Fornitori (Igor Macori)
&lt;br /&gt;16.30-17.00 - Gestire i permessi sui campi? Si può! (Giuseppe Marchi)
&lt;br /&gt;17.00-17.30 - Q&amp;A e Talks
&lt;br /&gt;17.30-19.00 - SharePint &amp; Talks
&lt;br /&gt;
&lt;br /&gt;Se volete poi più info sull'evento, questo è il sito di riferimento:
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/RealWorld" title="SharePoint 2010, Real World Solutions - Milano, 27 giugno 2012" target="_blank"&gt;http://www.sharepointcommunity.it/RealWorld&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Mentre qua trovate il form di iscrizione. E' un evento a posti limitati, quindi non c'è da perdere neanche un secondo!
&lt;br /&gt;- &lt;a href="http://communitydevtool.com/public/frmdetailevent.aspx?eventid=0503HLJUFFNRMECNNNKNFE" title="Form di iscrizione all'evento" target="_blank"&gt;Form di iscrizione all'evento&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;In ogni modo, il consiglio è sempre lo stesso: venite a trovarci perchè se ne vedranno delle belle!
&lt;br /&gt;In più, dopo la conferenza, per chi di voi vorrà rimanere ci sarà un pò di tempo per bere qualcosa in compagnia. Preparatevi però, perchè a Milano in questi giorni fa un caldo allucinante :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RealWorldSolutionsMilano27Giugno2012.aspx" /><issued>2012-6-20T13:9:34+01:00</issued><modified>2012-6-20T13:9:34+01:00</modified></entry><entry><title>Visualizzare i campi disponibili al rendering di una Content Query Web Part</title><id>/Blog/ViewAvailableFieldsInContentQueryWebPart.aspx</id><created>2012-6-15T10:20:51+01:00</created><content type="text/html" mode="escaped">La &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.contentbyquerywebpart.aspx" title="Content Query Web Part" target="_blank"&gt;Content Query Web Part&lt;/a&gt; è una delle web part di default di SharePoint (versione Enterprise), che ci permette di selezionare uno o più contenuti (anche da siti e/o liste diversi dal sito corrente) e di presentarli all'interno di una pagina SharePoint secondo una grafica di default o tramite una personalizzazione XSLT.
&lt;br /&gt;Solitamte non la uso quasi mai, perchè comunque preferisco scrivermi qualcosa di custom al posto di star dietro alla sintassi XSLT, ma questi sono più che altro punti di vista :)
&lt;br /&gt;Siccome però la visualizzazione di default, al 99%, non rispecchia mai la visualizzazione che vogliamo invece per il nostro sito SharePoint, sia in termini grafici che in termini di dati che vengono renderizzati, è necessario scrivere un pò di codice XSLT per modificare questo rendering ed adattarlo al resto del layout.
&lt;br /&gt;Quando si procede con la creazione di questo XSLT bisogna sapere bene che la Content Query Web Part espone i dati che preleva da liste o document library SharePoint in formato XML e che questo XML è strutturato, chiaramente, in base al numero e alla tiplogia dei campi di ogni contenuto.
&lt;br /&gt;Ecco quindi il problema: non è sempre immediato sapere quali campi abbiamo a disposizione per il rendering nel nostro file XSLT. Questo perchè la web part non ha modo di dircelo all'interno delle sue configurazioni, ma solo quando stiamo per stampare a video i risultati.
&lt;br /&gt;Per capire quali sono questi campi, dobbiamo fare una modifica ad uno dei file XSLT di default su cui si basa il rendering (sempre di default) della Content Query Web Part: il file ItemStyle.xsl, che troviamo all'interno della "Style Library" una volta che abilitiamo le feature enterprise di SharePoint.
&lt;br /&gt;
&lt;br /&gt;Nel dettaglio, è necessario aggiungere a quel file XSLT, il seguente codice:
&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;xsl:template&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="ShowFields"&lt;/span&gt; match&lt;span style='color:#0000FF'&gt;="Row[@Style='ShowFields']"&lt;/span&gt; mode&lt;span style='color:#0000FF'&gt;="itemstyle"&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;xsl:variable&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="SafeLinkUrl"&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;xsl:call-template&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="OuterTemplate.GetSafeLink"&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;xsl:with-param&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="UrlColumnName"&lt;/span&gt; select&lt;span style='color:#0000FF'&gt;="'LinkUrl'"&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;xsl:call-template&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;xsl:variable&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;a&lt;/span&gt;&lt;span style='color:#FF0000'&gt; href&lt;span style='color:#0000FF'&gt;="{@LinkUrl}"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsl:value-of&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="@Title"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;a&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;ul&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;xsl:for-each&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="@*"&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;xsl:sort&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="name()"&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;li&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;xsl:value-of&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="name()"&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;xsl:text&lt;/span&gt;&lt;span style='color:#FF0000'&gt; disable-output-escaping&lt;span style='color:#0000FF'&gt;="yes"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt; &lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xsl:text&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;xsl:value-of&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="."&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;li&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;xsl:for-each&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;ul&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;xsl:template&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Fatto questo, non ci resta che selezionare il template "ShowFields" tra le proprietà della Content Query Web Part posta nella pagina e visualizzare il risultato.
&lt;br /&gt;Vi assicuro che questo estratto di codice è davvero utile. Potete così visualizzare tutti i campi di ogni elemento ritornato dalla query sui contenuti di SharePoint, con il relativo internal name da utilizzare poi all'interno dei vostri template XSLT personalizzati.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content Query Web Part.aspx" title="TAG: Content Query Web Part"&gt;Content Query Web Part&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ViewAvailableFieldsInContentQueryWebPart.aspx" /><issued>2012-6-15T10:20:51+01:00</issued><modified>2012-6-15T10:20:51+01:00</modified></entry><entry><title>27 novembre 2012: SharePoint 15! SharePoint non sar&#224; pi&#249; lo stesso</title><id>/Blog/SharePonitFutureAboutSharePoint15.aspx</id><created>2012-5-31T15:57:9+01:00</created><content type="text/html" mode="escaped">&lt;table style="float: right; margin-left: 10px"&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://www.peppedotnet.it/Images/spfuture.png" alt="SharePoint Future 2012: 27 novembre 2012" style="float: left; margin: 10px" /&gt;&lt;/td&gt;&lt;td style="background-color: #333"&gt;&lt;img src="http://www.peppedotnet.it/Images/spoc-invert_mod.png" alt="SharePoint Conference 2013: 5,6 e 7 marzo 2013" style="float: left; margin: 10px" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;Ci siamo. E' arrivata l'ora di "salvarsi la data" (lo so, in inglese suona molto meglio, ma il concetto è lo stesso ed è importante).
&lt;br /&gt;&lt;span style="color: red; font-weight: bold"&gt;Martedì 27 novembre 2012&lt;/span&gt; si terrà la seconda SharePoint Future, evento tecnico di preview della nuova versione di SharePoint e di Office, attualmente con il code-name &lt;span style="text-decoration:underline"&gt;"SharePoint 15"&lt;/span&gt; ed &lt;span style="text-decoration:underline"&gt;"Office 15"&lt;/span&gt;.
&lt;br /&gt;L'evento seguirà la SharePoint Conference di Las Vegas e sarà uno dei primi in europa a parlare della nuova versione del prodotto di collaborazione Microsoft.
&lt;br /&gt;In una singola giornata, avrete infatti la possibilità di vedere una preview di quelle che saranno le novità della prossima versione di SharePoint e di Office, con la possibilità poi di prenotarvi in maniera esclusiva il posto per la prossima SharePoint Conference italiana, che si terrà nei giorni &lt;span style="color: red; font-weight: bold"&gt;5,6 e 7 marzo 2013&lt;/span&gt;.
&lt;br /&gt;
&lt;br /&gt;Attenzione però: i posti per al SharePoint Future sono limitati! I primi 200 di voi che si accaparreranno il posto, avranno l'occasione di vedere il prodotto in anteprima e di prepararsi come si deve per il futuro.
&lt;br /&gt;
&lt;br /&gt;Quindi, vi riscrivo le date, percè voglio essere sicuro che ve le ricordiate :)
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointconference.it/events/Future2012/default.aspx" title="SharePoint Future 2012" target="_blank" style="color: red; font-weight: bold"&gt;SharePoint Future 2012: 27 novembre 2012&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointconference.it/events/2013/default.aspx" title="SharePoint Conference 2013" target="_blank" style="color: red; font-weight: bold"&gt;SharePoint Conference 2013: 5,6 e 7 marzo 2013&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Le location non sono ancora ufficiali. Se volete rimanere informati, andate sul &lt;a href="http://www.sharepointconference.it/events/Future2012/default.aspx" title="SharePoint Future 2012" target="_blank"&gt;sito dell'evento&lt;/a&gt; ed inserite la vostra mail.
&lt;br /&gt;
&lt;br /&gt;Non so voi... ma io non sto nella pelle! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 15.aspx" title="TAG: SharePoint 15"&gt;SharePoint 15&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePonitFutureAboutSharePoint15.aspx" /><issued>2012-5-31T15:57:9+01:00</issued><modified>2012-5-31T15:57:9+01:00</modified></entry><entry><title>Data provisioning in SharePoint 2010</title><id>/Blog/SharePoint2010DataProvisioning.aspx</id><created>2012-5-21T14:52:23+01:00</created><content type="text/html" mode="escaped">Continua il nostro percorso di sviluppo su SharePoint 2010. Oggi vedremo una delle tecniche di base per lo sviluppo di applicazioni personalizzate su SharePoint: il provisioning di strutture e dati.
&lt;br /&gt;Tramite questa tecnica, di cui abbiamo parlato ormai tantissime volte, è possibile arricchire le nostre applicazioni di strutture pre-definite (quindi liste, content type, site columns, ecc...) in modo da permettere agli utenti finali di creare nuovi contenuti a partire da esse o, più semplicemente, per strutturare al meglio le nostre stesse applicazioni.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-provisioning/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;Sempre riguardo questo argomento, vi lascio nuovamente i riferimenti a dei vecchi post che ho scritto. Vi saranno sicuramente utili se volete entrare ancor più nel dettaglio.
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Articoli/SharepointFeatures.aspx" title="Introduzione alle feature" target="_blank"&gt;http://www.peppedotnet.it/Articoli/SharepointFeatures.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePointSiteColumnsWithFeature.aspx" title="Site columns tramite una feature" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePointSiteColumnsWithFeature.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/ProvisioningContentTypesWithAFeature.aspx" title="Content types tramite una feature" target="_blank"&gt;http://www.peppedotnet.it/Blog/ProvisioningContentTypesWithAFeature.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.aspitalia.com/script/992/Gestire-Automaticamente-Dipendenze-Feature-SharePoint.aspx" title="Le dipendenze tra le feature" target="_blank"&gt;http://www.aspitalia.com/script/992/Gestire-Automaticamente-Dipendenze-Feature-SharePoint.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2007ListDefinitionCreation.aspx" title="Introduzione alle list definition" target="_blank"&gt;http://www.peppedotnet.it/Blog/SharePoint2007ListDefinitionCreation.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare il video: 
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo9.zip" title="Scarica i sorgenti usati per registrare il video" target="_blank"&gt;BEIT_Demo9.zip&lt;/a&gt; (76 Kb) 
&lt;br /&gt;
&lt;br /&gt;Invece, per riguardarvi tutti gli altri, ecco qua la lista completa: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Il modello ad oggetti di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-il-nuovo-modello-ad-oggetti" target="_blank"&gt;Il modello ad oggetti di SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a title="Modello per applicazioni .NET" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per applicazioni Silverlight" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight" target="_blank"&gt;Modello per applicazioni Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per personalizzazioni Javascript" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Javascript" target="_blank"&gt;Modello per personalizzazioni Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="I REST services di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-i-REST-services" target="_blank"&gt;I REST services di SharePoint 2010&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-personalizzare-la-barra-dei-Ribbon" title="Personalizzazione della barra dei Ribbon" target="_blank"&gt;Personalizzazione della barra dei Ribbon&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="LINW to SharePoint" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-LINQ-to-SharePoint" target="_blank"&gt;LINQ to SharePoint&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-provisioning" title="Data Provisioning in SharePoint 2010" target="_blank"&gt;Data Provisioning&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Sandbox solutions in SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-le-Sandboxed-Solutions" target="_blank"&gt;Sandbox Solutions in SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Workflow con SharePoint 2010 e Visual Studio 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Workflow-con-SharePoint-2010-e-Visual-Studio-2010" target="_blank"&gt;Workflow con SharePoint 2010 e Visual Studio 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Provisioning.aspx" title="TAG: Provisioning"&gt;Provisioning&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010DataProvisioning.aspx" /><issued>2012-5-21T14:52:23+01:00</issued><modified>2012-5-21T14:52:23+01:00</modified></entry><entry><title>Come creare una external list tramite l'object model di SharePoint 2010</title><id>/Blog/HowToCreateBCSExternalListWithSharePoint2010ObjectModel.aspx</id><created>2012-5-18T15:39:38+01:00</created><content type="text/html" mode="escaped">Abbiamo già visto più volte ormai che cosa sono i &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010BusinessConnectivityServicesScreencast.aspx" title="Screencast: I business connectivity services di SharePoint 2010" target="_blank"&gt;Business Connectivity Services&lt;/a&gt; e a che cosa ci sono utili. Sapete quindi che, una volta creato il model vero e proprio (o tramite l'utilizzo di SharePoint Designer o tramite Visual Studio) è necessaria la presenza di una nuova lista di tipo "External list" per permetterci di visualizzare e gestire i dati prelevati dalla fonte di dati esterna.
&lt;br /&gt;Questa tipologia di lista la possiamo creare sia tramite l'interfaccia web di SharePoint 2010, sia tramite lo stesso SharePoint Designer, ma comunque entrambe le modalità prevedono l'intervento manuale.
&lt;br /&gt;Come la maggior parte delle operazioni che possiamo fare da interfaccia, possiamo sfruttare questa funzionalità anche all'interno della nostre applicazioni SharePoint personalizzate, in due differenti maniere:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;tramite il modello ad oggetti&lt;/li&gt;&lt;li&gt;tramite la sintassi XML di provisioning di una lista (list instance)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Vediamo entrambi gli esempi.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Object model&lt;/b&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPListDataSource ds = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPListDataSource();
&lt;br /&gt;ds.SetProperty(SPListDataSource.BDCProperties.LobSystemInstance, &lt;span style="color: #A31515"&gt;"NOME MODELLO BCS"&lt;/span&gt;);
&lt;br /&gt;ds.SetProperty(SPListDataSource.BDCProperties.EntityNamespace, &lt;span style="color: #A31515"&gt;"http://NAMESPACE"&lt;/span&gt;);
&lt;br /&gt;ds.SetProperty(SPListDataSource.BDCProperties.Entity, &lt;span style="color: #A31515"&gt;"NOME ENTITA'"&lt;/span&gt;);
&lt;br /&gt;ds.SetProperty(SPListDataSource.BDCProperties.SpecificFinder, &lt;span style="color: #A31515"&gt;"NOME METODO DI TIPO SPECIFIC FINDER"&lt;/span&gt;);
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://siteurl"&lt;/span&gt;))
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.RootWeb)
&lt;br /&gt;    {
&lt;br /&gt;        web.Lists.Add(&lt;span style="color: #A31515"&gt;"NOME LISTA"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;""&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"Lists/LISTURL"&lt;/span&gt;, ds);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo caso, ci viene in aiuto un overload del metodo &lt;a href="http://msdn.microsoft.com/en-us/library/ee542908" title="Metodo Add della classe SPListCollection" target="_blank"&gt;Add&lt;/a&gt; della classe SPListCollection che ci da la possibilità di specificare la fonte di dati per la nostra external list.
&lt;br /&gt;Questo overload è disponibile solo per questo utilizzo. Quindi solo per la creazione di liste collegate ad un data model BCS.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;List instance&lt;/b&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;ListInstance&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Title&lt;span style='color:#0000FF'&gt;="TITOLO LISTA"&lt;/span&gt;
&lt;br /&gt;                OnQuickLaunch&lt;span style='color:#0000FF'&gt;="TRUE"&lt;/span&gt;
&lt;br /&gt;                TemplateType&lt;span style='color:#0000FF'&gt;="600"&lt;/span&gt;
&lt;br /&gt;                FeatureId&lt;span style='color:#0000FF'&gt;="00bfea71-de22-43b2-a848-c05709900100"&lt;/span&gt;
&lt;br /&gt;                Url&lt;span style='color:#0000FF'&gt;="Lists/LISTURL"&lt;/span&gt;
&lt;br /&gt;                Description&lt;span style='color:#0000FF'&gt;=""&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;DataSource&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;Property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="LobSystemInstance"&lt;/span&gt; Value&lt;span style='color:#0000FF'&gt;="NOME MODELLO BCS"&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;Property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="EntityNamespace"&lt;/span&gt; Value&lt;span style='color:#0000FF'&gt;="http://NAMESPACE"&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;Property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="Entity"&lt;/span&gt; Value&lt;span style='color:#0000FF'&gt;="NOME ENTITA'"&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;Property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="SpecificFinder"&lt;/span&gt; Value&lt;span style='color:#0000FF'&gt;="NOME METODO DI TIPO SPECIFIC FINDER"&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;DataSource&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;ListInstance&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ricordo che questo estratto di sintassi per il provisioning di una lista, lo dovete inserire all'interno del file Elements.xml che viene creato una volta che scegliete di inserire una nuova "list instance" all'interno della vostra soluzione Visual Studio.
&lt;br /&gt;
&lt;br /&gt;Così facendo potete aggiungere anche la creazione di external list alle vostre soluzioni custom, che vedono già la creazione di modelli BCS.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/BCS.aspx" title="TAG: BCS"&gt;BCS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCreateBCSExternalListWithSharePoint2010ObjectModel.aspx" /><issued>2012-5-18T15:39:38+01:00</issued><modified>2012-5-18T15:39:38+01:00</modified></entry><entry><title>Come disabilitare il tasto di sincronizzazione con Workspace dalla Ribbon di SharePoint 2010</title><id>/Blog/HowToDisableWorkspaceButtonFromSharePointRibbon.aspx</id><created>2012-4-19T13:59:21+01:00</created><content type="text/html" mode="escaped">Nella maggior parte delle liste o delle document library di SharePoint 2010, è possibile utilizzare un tasto dalla barra dei Ribbon per abilitare la sincronizzazione dei contenuti di tale lista o document library tramite SharePoint Workspace.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/syncToWorkspaceSharePointRibbon.png" alt="Sync to SharePoint Workspace Ribbon" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questa opzione la possiamo però anche disabilitare, entrando dentro la pagina dei settings della nostra lista e seguendo questo percorso di operazioni:
&lt;br /&gt;
&lt;br /&gt;List Settings =&gt; General Settings =&gt; Advanced Settings
&lt;br /&gt;
&lt;br /&gt;ed impostando la voce "Office Client Availability" su "NO".
&lt;br /&gt;Come ogni cosa, possiamo scegliere questa impostazione anche tramite il modello ad oggetti o tramite Powershell.
&lt;br /&gt;In questo caso, bisogna valorizzare la proprietà "ExcludeFromOfflineClient" della classe "SPList" sulla lista o document library che non vogliamo far sincronizzare ai nostri utenti tramite Workspace.
&lt;br /&gt;Il codice è molto semplice:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"URL SITO"&lt;/span&gt;))
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
&lt;br /&gt;    {                    
&lt;br /&gt;        SPList list = web.Lists.TryGetList(&lt;span style="color: #A31515"&gt;"NOME LISTA"&lt;/span&gt;);
&lt;br /&gt;        list.ExcludeFromOfflineClient = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;; &lt;span style="color: #008200"&gt;//così ho disabilitato il sync&lt;/span&gt;
        list.Update();
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Penso che sia una cosa da conoscere quando sapete che gli utenti che utilizzando le vostre applicazioni fanno uso quotidianamente di SharePoint Workspace per gestire i propri contenuti.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Workspace.aspx" title="TAG: Workspace"&gt;Workspace&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object model.aspx" title="TAG: Object model"&gt;Object model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDisableWorkspaceButtonFromSharePointRibbon.aspx" /><issued>2012-4-19T13:59:21+01:00</issued><modified>2012-4-19T13:59:21+01:00</modified></entry><entry><title>Personalizzare la barra dei Ribbon in SharePoint 2010</title><id>/Blog/VideoOnSharePoint2010RibbonCustomization.aspx</id><created>2012-4-17T8:32:20+01:00</created><content type="text/html" mode="escaped">Continua il nostro percorso di sviluppo su SharePoint 2010. Oggi vedremo le tecniche di base con cui possiamo personalizzare la Ribbon bar di SharePoint, una delle novità più forti riguardanti la user interface del prodotto.
&lt;br /&gt;Attraverso la scrittura di un pò di XML, utilizzando un pò delle conoscenze che avevamo su SharePoint 2007 per quanto riguarda il provisioning di azioni personalizzate, abbiamo la possibilità di aggiungere controlli (bottoni, checkbox, dropdownlist, toggle button, ecc..), gruppi di controlli e nuovi tab all'interno della barra visibile nella master page di default di SharePoint, nella parte alta.
&lt;br /&gt;All'interno del video vedremo anche qualche riga di codice javascript qua e la, perchè queste tecniche di personalizzazione dell'interfaccia di SharePoint si legano molto con lo sviluppo client-side e, di conseguenza, con il &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010ClientObjectModelFoJavascript.aspx" title="Javascript client object model di SharePoint 2010" target="_blank"&gt;client object model&lt;/a&gt; che SharePoint stesso mette a disposizione all'interno delle proprie pagine.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-personalizzare-la-barra-dei-Ribbon/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;Sempre riguardo questo argomento, vi lascio nuovamente i riferimenti a dei vecchi post che ho scritto. Vi saranno sicuramente utili se volete entrare ancor più nel dettaglio.
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Come creare un Ribbon in SharePoint 2010" href="http://www.peppedotnet.it/Blog/HowToWriteARibbonInSharePoint2010.aspx"&gt;Come creare un Ribbon in SharePoint 2010&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="La gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010" href="http://www.peppedotnet.it/Blog/ControlPositionOnSharePoint2010RibbonBar.aspx"&gt;La gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Template di un controllo Ribbon posto all interno di un gruppo pre-esistente" href="http://www.peppedotnet.it/Blog/SharePoint2010RibbonTemplateAlias.aspx"&gt;Template di un controllo Ribbon posto all'interno di un gruppo pre-esistente&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Le icone di un controllo personalizzato all interno della barra dei Ribbon" href="http://www.peppedotnet.it/Blog/SharePoint2010RibbonControlsImages.aspx"&gt;Le icone di un controllo personalizzato all'interno della barra dei Ribbon&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell utente corrente" href="http://www.peppedotnet.it/Blog/EnableOrDisableASharePoint2010RibbonButton.aspx"&gt;Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Visualizzare controlli custom nella barra dei Ribbon posta in home page" href="http://www.peppedotnet.it/Blog/CustomRibbonVisibleAlsoInHomePage.aspx"&gt;Visualizzare controlli custom nella barra dei Ribbon posta in home page&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare il video:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo8.zip" title="" target="_blank"&gt;BEIT_Demo8.zip&lt;/a&gt; (76 Kb)
&lt;br /&gt;
&lt;br /&gt;Invece, per riguardarvi tutti gli altri, ecco qua la lista completa: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Il modello ad oggetti di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-il-nuovo-modello-ad-oggetti" target="_blank"&gt;Il modello ad oggetti di SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a title="Modello per applicazioni .NET" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per applicazioni Silverlight" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight" target="_blank"&gt;Modello per applicazioni Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per personalizzazioni Javascript" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Javascript" target="_blank"&gt;Modello per personalizzazioni Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="I REST services di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-i-REST-services" target="_blank"&gt;I REST services di SharePoint 2010&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-personalizzare-la-barra-dei-Ribbon" title="Personalizzazione della barra dei Ribbon" target="_blank"&gt;Personalizzazione della barra dei Ribbon&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="LINW to SharePoint" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-LINQ-to-SharePoint" target="_blank"&gt;LINQ to SharePoint&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Sandbox solutions in SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-le-Sandboxed-Solutions" target="_blank"&gt;Sandbox Solutions in SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Workflow con SharePoint 2010 e Visual Studio 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Workflow-con-SharePoint-2010-e-Visual-Studio-2010" target="_blank"&gt;Workflow con SharePoint 2010 e Visual Studio 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VideoOnSharePoint2010RibbonCustomization.aspx" /><issued>2012-4-17T8:32:20+01:00</issued><modified>2012-4-17T8:32:20+01:00</modified></entry><entry><title>Disponibili da oggi gli esami su Office 365</title><id>/Blog/Office365Exams.aspx</id><created>2012-4-5T14:42:39+01:00</created><content type="text/html" mode="escaped">Da oggi (4 aprile 2012) sono disponibili i due esami riguardanti Office 365 che sono stati in fase beta da due mesi a questa parte.
&lt;br /&gt;Nel dettaglio, tramite il vostro centro Prometric preferito, potete prenotare gli esami:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-323" title="70-323 – Administering Office 365" target="_blank"&gt;70-323 – Administering Office 365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-321" title="70-321 – Deploying Office 365" target="_blank"&gt;70-321 – Deploying Office 365&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Maggiori dettaglio sul blog "Born to Learn" legato proprio agli esami di certificazione Microsoft:
&lt;br /&gt;- &lt;a href="http://borntolearn.mslearn.net/btl/b/weblog/archive/2012/04/04/microsoft-office-365-exams-are-here.aspx" title="Microsoft Office 365 Exams are Here!" target="_blank"&gt;http://borntolearn.mslearn.net/btl/b/weblog/archive/2012/04/04/microsoft-office-365-exams-are-here.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office365.aspx" title="TAG: Office365"&gt;Office365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Certificazioni.aspx" title="TAG: Certificazioni"&gt;Certificazioni&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Office365Exams.aspx" /><issued>2012-4-5T14:42:39+01:00</issued><modified>2012-4-5T14:42:39+01:00</modified></entry><entry><title>I REST services di SharePoint 2010</title><id>/Blog/SharePoint2010RestServices.aspx</id><created>2012-3-29T11:43:36+01:00</created><content type="text/html" mode="escaped">Continua il nostro percorso di sviluppo su SharePoint 2010. Abbiamo appena finito di parlare di Client Object Model, visto in tutte le salse. Oggi introduciamo un'altra feature molto carina e veramente utile in moltissimi contesti: i REST Services di SharePoint 2010.
&lt;br /&gt;In realtà se ne deve parlare al singolare, perchè non è altro che un particolare servizio (il servizio reperibile all'url: "http://[siteurl]/_vti_bin/listdata.svc") che è consumabile in modalità REST e che ci permette di interagire con i contenuti di liste e document library SharePoint attraverso delle semplici chiamate HTTP. 
&lt;br /&gt;L'interfaccia REST esposta ci permette infatti, di recuperare elementi o file, effettuarne un sorting, filtrarne una parte ed eseguire eventuali modifiche o cancellazioni tramite l'utilizzo di semplici querystring.
&lt;br /&gt;Assieme a queste funzionalità, vedremo anche il supporto dato da Visual Studio 2010 nel creare le relative strutture così da permetterci di utilizzare tale interfaccia REST all'interno delle nostre applicazioni client-side mantenendo il paradigma di programmazione ad oggetti.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-i-REST-services/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare il video:
&lt;br /&gt; - &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo7.zip" title="Scarica i sorgenti del video" target="_blank"&gt;BEIT_Demo7.zip&lt;/a&gt; (312Kb) 
&lt;br /&gt;
&lt;br /&gt;Invece, per riguardarvi tutti gli altri, ecco qua la lista completa:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Il modello ad oggetti di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-il-nuovo-modello-ad-oggetti" target="_blank"&gt;Il modello ad oggetti di SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a title="Modello per applicazioni .NET" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per applicazioni Silverlight" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight" target="_blank"&gt;Modello per applicazioni Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per personalizzazioni Javascript" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Javascript" target="_blank"&gt;Modello per personalizzazioni Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-i-REST-services" title="I REST services di SharePoint 2010" target="_blank"&gt;I REST services di SharePoint 2010&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="LINW to SharePoint" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-LINQ-to-SharePoint" target="_blank"&gt;LINQ to SharePoint&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Sandbox solutions in SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-le-Sandboxed-Solutions" target="_blank"&gt;Sandbox Solutions in SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Workflow con SharePoint 2010 e Visual Studio 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Workflow-con-SharePoint-2010-e-Visual-Studio-2010" target="_blank"&gt;Workflow con SharePoint 2010 e Visual Studio 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2012.aspx" title="TAG: SharePoint 2012"&gt;SharePoint 2012&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/REST.aspx" title="TAG: REST"&gt;REST&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RestServices.aspx" /><issued>2012-3-29T11:43:36+01:00</issued><modified>2012-3-29T11:43:36+01:00</modified></entry><entry><title>Word Automation Services, error code: 65543</title><id>/Blog/WordAutomationServicesErrorCode65543.aspx</id><created>2012-3-19T20:23:17+01:00</created><content type="text/html" mode="escaped">In questo periodo ho avuto l'occasione di utilizzare gran parte delle caratteristiche dei Word Automation Services di SharePoint 2010, per la conversione di documenti Word in altri formati. Nel mio caso, avevo la necessità di convertire un file Word in PDF.
&lt;br /&gt;Se non avete idea di che cosa siano i Word Automation Service o di come si usino vi rimando a queste pagine dell'SDK:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee558278.aspx" title="Word Automation Services" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ee558278.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee557736.aspx" title="Programming Word Automation Services" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ee557736.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Riguardo questa funzionalità di SharePoint 2010 che, vi ricordo, è disponibile solamente nella versione Enterpise del prodotto, devo ammettere che la documentazione relativa è sicuramente un pò "povera" rispetto alle funzionalità offerte, soprattutto per quanto riguarda la risoluzione degli errori. Questo ve lo dico perchè proprio in questi giorni mi sono imbattutto in un particolare errore, mal documentato. Vi spiego meglio.
&lt;br /&gt;Ogni mia conversione falliva e l'errore riportato era il numero: 65543.
&lt;br /&gt;La documentazione dice che quel codice d'errore sta a significare che il file è corrotto oppure invalido. Lo potete leggere a questa pagina:
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ff512774.aspx" title="Word Automation Services Error Messages and Error Codes" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ff512774.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A me pareva veramente strano che tutti i miei file fossero corrotti o invalidi, al punto che sono arrivato anche a crearne uno nuovo con dentro solo una riga di testo, per vedere se la conversione andava a buon fine o meno. Chiaramente senza nessun risultato positivo.
&lt;br /&gt;Controllando il modello ad oggetti però e cercando un pò su internet, sono riuscito a risolvere il problema. Basta solamente disabilitare una proprietà dei Word Automation Services, chiamata &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.word.server.service.wordserviceapplication.disablesandbox.aspx" title="DisableSandbox property" target="_blank"&gt;DisableSandbox&lt;/a&gt;, che specifica il contesto in cui deve girare la vostra service application. Di default ha valore "true", il che significa che di default i Word Automation Services girano all'interno del contesto ristretto delle sandbox, il che può portare ad errori di permessi o simili.
&lt;br /&gt;Nel mio caso, appunto, dal contesto limitato delle sandbox il servizio di conversione non riusciva ad accedere al file tramite una richiesta HTTP.
&lt;br /&gt;
&lt;br /&gt;Per modificare questa configurazione, bastano tre semplici righe di codice all'interno di PowerShell:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$sp = Get-SPServiceApplication | where {$_.TypeName.Equals(&lt;span style="color: #A31515"&gt;"Word Automation Services"&lt;/span&gt;)}  
&lt;br /&gt;$sp.DisableSandbox = $&lt;span style="color: #0000FF"&gt;true&lt;/span&gt; 
&lt;br /&gt;$sp.Update()&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo mini-script è presente anche all'interno della code gallery di Microsoft a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://gallery.technet.microsoft.com/scriptcenter/Remove-Sandbox-Mode-for-9c8ac750" title="Remove Sandbox Mode for Service" target="_blank"&gt;http://gallery.technet.microsoft.com/scriptcenter/Remove-Sandbox-Mode-for-9c8ac750&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero che possa esser utile a qualcuno, perchè io ci ho perso almeno un'ora dietro a sto scherzo :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Word Automation Service.aspx" title="TAG: Word Automation Service"&gt;Word Automation Service&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WordAutomationServicesErrorCode65543.aspx" /><issued>2012-3-19T20:23:17+01:00</issued><modified>2012-3-19T20:23:17+01:00</modified></entry><entry><title>What's new in Visual Studio 11 beta for SharePoint developers (grazie a SharePoint Europe)</title><id>/Blog/WhatsNewInVisualStudio11BetaForSharePointDev.aspx</id><created>2012-3-15T15:48:35+01:00</created><content type="text/html" mode="escaped">&lt;div style="padding: 5px;"&gt;&lt;a href="http://sharepointeurope.com" title="SharePoint Europe" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/spEurope2013.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;Ieri sera è stato pubblicato un mio articolo riguardo le novità presenti all'interno di Visual Studio 11 per noi sviluppatori SharePoint all'interno del sito &lt;a href="http://sharepointeurope.com/community/member.aspx" title="SharePoint Europe Community" target="_blank"&gt;Community&lt;/a&gt; della &lt;a href="http://sharepointeurope.com" title="SharePoint Europe" target="_blank"&gt;SharePoint Europe&lt;/a&gt;, la conferenza europea di SharePoint la cui prossima edizione si terrà a febbraio 2013 a Copenaghen.
&lt;br /&gt;Un doverso grazie a Mary per la pubblicazione e, ancor di più, a chi mi ha aiutato a correggere il mio pessimo inglese :)
&lt;br /&gt;
&lt;br /&gt;L'articolo non è altro che l'insieme totale dei vari tip che sto pubblicato man mano qui sul blog, con le immagini aggiornate alla versione Beta di Visual Studio 11. 
&lt;br /&gt;Come vi dicevo, per quanto riguarda i tool di sviluppo su SharePoint 2010, non ci sono cambiamenti dalla preview uscita in precedenza a questa versione beta, quindi tutto quello che abbiamo già detto negli scorsi mesi resta comunque valido.
&lt;br /&gt;Vi lascio il link diretto all'articolo intanto:
&lt;br /&gt;- &lt;a href="http://sharepointeurope.com/blog/2012/3/14/what’s-new-in-visual-studio-11-beta-for-sharepoint-developers.aspx" title="" target="_blank"&gt;http://sharepointeurope.com/blog/2012/3/14/what’s-new-in-visual-studio-11-beta-for-sharepoint-developers.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, qui trovate i tip pubblicati fin'ora sull'argomento:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento" href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip1.aspx" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Visual Studio 11 for SharePoint Tip#2: Silverlight Web Part" href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip2.aspx" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#2: Silverlight Web Part&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip3.aspx" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Visual Studio 11 for SharePoint Tip#4: addio all'azione di menu package" href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip4.aspx" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#4: addio all'azione di menu package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Visual Studio 11 for SharePoint Tip#5: deploy remoto" href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip5RemoteDeploy.aspx" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#5: deploy remoto&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WhatsNewInVisualStudio11BetaForSharePointDev.aspx" /><issued>2012-3-15T15:48:35+01:00</issued><modified>2012-3-15T15:48:35+01:00</modified></entry><entry><title>Come recuperare l'url della pagina di ricerca di una site collection SharePoint</title><id>/Blog/HowToRetrieveSharePointSearchPageViaCode.aspx</id><created>2012-3-5T18:25:17+01:00</created><content type="text/html" mode="escaped">Dovete sapere che la pagina di ricerca di una site collection SharePoint 2012 può cambiare in base a diversi fattori. 
&lt;br /&gt;Se avete installato solamente SharePont Foundation 2010 sulla vostra macchina questa pagina sarà sempre la "searchresults.aspx", mentre se avete installato la versione Server avrete inizalmente la pagina "OSSSearchresults.aspx", che potete però cambiare a mano specificando una qualsiasi pagina a vostra piacimento all'interno della pagina di settings della site collection.
&lt;br /&gt;
&lt;br /&gt;Ora, diciamo che per esempio state sviluppando un'applicazione che necessita di stampare un semplice link a quella pagina. Chiaramente sarebbe un errore cablare questo link nel codice o metterlo in qualche file di configurazione, in quanto può essere soggetto a cambiamento.
&lt;br /&gt;Purtroppo il modello ad oggetti di SharePoint non ci fornisce alcuna API per recuperare dinamicamente questa URL, ma abbiamo comunque la possibilità di leggerla spulciando le property bag del sito di root della site collection:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://siteurl"&lt;/span&gt;)) 
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb()) 
&lt;br /&gt;    { 
&lt;br /&gt;        var searchCenterUrl = web.AllProperties[&lt;span style="color: #A31515"&gt;"SRCH_ENH_FTR_URL"&lt;/span&gt;];
&lt;br /&gt;        var scopeDropDown = web.AllProperties[&lt;span style="color: #A31515"&gt;"SRCH_SITE_DROPDOWN_MODE"&lt;/span&gt;];
&lt;br /&gt;        var searchPageUrl = web.AllProperties[&lt;span style="color: #A31515"&gt;"SRCH_TRAGET_RESULTS_PAGE"&lt;/span&gt;];
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Nell'esempio, abbiamo letto rispettivamente:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;L'url del Search Center legato alla site collection corrente (se presente)&lt;/li&gt;&lt;li&gt;Lo scope di default della drop down list di ricerca&lt;/li&gt;&lt;li&gt;L'url della pagina di ricerca&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Chiaramente, come ogni property bag, avete anche la possibilità di aggiornare i valori di queste proprietà. A vostro rischio e pericolo chiaramente :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object model.aspx" title="TAG: Object model"&gt;Object model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToRetrieveSharePointSearchPageViaCode.aspx" /><issued>2012-3-5T18:25:17+01:00</issued><modified>2012-3-5T18:25:17+01:00</modified></entry><entry><title>Il Client Object Model di SharePoint 2010 per personalizzazioni Javascript</title><id>/Blog/SharePoint2010ClientObjectModelFoJavascript.aspx</id><created>2012-3-2T11:40:24+01:00</created><content type="text/html" mode="escaped">Continua il nostro percorso di sviluppo su SharePoint 2010. Le volte precedenti abbiamo introdotto l'architettura e il funzionamento di base che sta dietro al Client Object Model assieme ai primi due video dedicati all'utilizzo di tali librerie in applicazioni .NET e in applicazioni Silverlight.
&lt;br /&gt;Questa volta vedremo come sfruttare gli stessi concetti ed esattemente le medisime funzionalità tramite delle personalizzazioni javascript. Questa parte del Client Object Model è veramente molto interessante perchè ci permette di restare al passo con i tempi e fornire ai nostri utenti finali delle applicazioni con una user experience di alto livello.
&lt;br /&gt;Per non parlare del fatto che si integra naturalmente con le tecniche di personalizzazione della barra dei Ribbon e con i principali plugin Javascript che sono disponibili nella rete.
&lt;br /&gt;Nei sorgenti allegati a questo video, vedrete infatti com'è possibile integrare il Client Object Model di SharePoint 2010 con JQuery.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Javascript/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt; 
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare il video:
&lt;br /&gt; - &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo6.zip" title="Scarica i sorgenti del video" target="_blank"&gt;BEIT_Demo6.zip&lt;/a&gt; (160 Kb) 
&lt;br /&gt;
&lt;br /&gt;Invece, per riguardarvi tutti gli altri, ecco qua la lista completa (aggiornata con i video di &lt;a href="http://www.sharepoint-reference.com/" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt;):
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-il-nuovo-modello-ad-oggetti" title="Il modello ad oggetti di SharePoint 2010" target="_blank"&gt;Il modello ad oggetti di SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a title="Modello per applicazioni .NET" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Modello per applicazioni Silverlight" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight" target="_blank"&gt;Modello per applicazioni Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Javascript" title="Modello per personalizzazioni Javascript" target="_blank"&gt;Modello per personalizzazioni Javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-LINQ-to-SharePoint" title="LINW to SharePoint" target="_blank"&gt;LINQ to SharePoint&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-le-Sandboxed-Solutions" title="Sandbox solutions in SharePoint 2010" target="_blank"&gt;Sandbox Solutions in SharePoint 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Workflow-con-SharePoint-2010-e-Visual-Studio-2010" title="Workflow con SharePoint 2010 e Visual Studio 2010" target="_blank"&gt;Workflow con SharePoint 2010 e Visual Studio 2010&lt;/a&gt; (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ClientObjectModelFoJavascript.aspx" /><issued>2012-3-2T11:40:24+01:00</issued><modified>2012-3-2T11:40:24+01:00</modified></entry><entry><title>Visual Studio 11 for SharePoint Tip#5: deploy remoto</title><id>/Blog/VisualStudio11ForSharePointTip5RemoteDeploy.aspx</id><created>2012-2-27T15:0:59+01:00</created><content type="text/html" mode="escaped">La Developer Preview di Visual Studio 11 ci svela una funzionalità veramente utile: la possibilità di effettuare un deploy su una macchina remota, quindi diversa da quella in cui state eseguendo la vostra istanza di Visual Studio. 
&lt;br /&gt;C’è una pecca però.. questa funzionalità, per ora, è disponibile SOLO per le vostre soluzioni di tipo Sandbox. Se pensate di poter sviluppare una Farm Solution ed effettuarne il deploy tramite Visual Studio 11 su una macchina remota, mi spiace ma rimarrete delusi (come lo sono rimasto io). 
&lt;br /&gt;Non ci sono "rumors" riguardo questa possibilità ancora e non so dirvi se verrà o meno implementata, ma per quanto riguarda lo sviluppo di Sandbox Solution è sicuramente una cosa fantastica, perchè vi permette di fare il deploy del file .wsp direttamente all'interno della solution gallery di una qualsiasi site collection SharePoint in cui avete dei permessi di site administrator. 
&lt;br /&gt;Questo vuol dire che potrete finalmente effettuare il deploy automatico di soluzioni custom anche su SharePoint Online, previa relativa autenticazione chiaramente. 
&lt;br /&gt;
&lt;br /&gt;La stessa funzionalità l'avevo sviluppata anche io un pò di tempo fa (&lt;a href="http://solutioninstaller365.codeplex.com/" title="Office 365 solution installer" target="_blank"&gt;http://solutioninstaller365.codeplex.com&lt;/a&gt;) ma a questo punto credo che mi convenga smettere di portare avanti il progetto visto che mi hanno copiato l'idea ;) 
&lt;br /&gt;
&lt;br /&gt;Andando avanti e cercando di far subito chiarezza dovete però fermare la fantasia e capire bene che, nonostante sia disponibile questa funzionalità di deploy remoto, dobbiamo comunque installare Visual Studio 11 in una macchina in cui è presente anche un’installazione locale di SharePoint 2010 (Foundation o Server che sia). Altrimenti, vi imbattarete sicuramente in questo errore: 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_2.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;E' così in questa Developer Preview di Visual Studio 11 e credo proprio che questo requisito rimanga anche in RTM (a meno di grosse, ma grosse, sorprese). 
&lt;br /&gt;
&lt;br /&gt;Vediamo ora quali sono i passi per sfruttare questa nuova funzionalità di Visual Studio 11 (applicata a SharePoint Online). Per prima cosa creiamo un nuovo progetto di tipo "SharePoint 2010 Project" e selezioniamo come target framework il 3.5 (questo è un passo obbligatorio per lo sviluppo di applicazioni su SharePoint 2010 o SharePoint Online). 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/spRemoteDeployVs11_1.jpg" title="Visual Studio 11 for SharePoint Tip#5: deploy remoto" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_1s.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, scegliamo di sviluppare una Sandbox Solution (vi ricordo che la funzionalità di deploy remoto nella Developer Preview di Visual Studio 11 è disponibile SOLO per questo tipo di soluzione) e specifichiamo l'URL della nostra site collection SharePoint Online. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_2.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Creiamo una semplice code web part (in figura potete vedere come non sono state fatte modifiche alla struttura di una soluzione SharePoint 2010). 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/spRemoteDeployVs11_3.jpg" title="Visual Studio 11 for SharePoint Tip#5: deploy remoto" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_3s.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E sfruttiamo il nuovo pulsante d'azione "Publish" disponibile facendo click con il tasto destro del mouse sul vostro progetto SharePoint. Nel caso in cui tentassimo di effettuare un deploy diretto della nostra applicazione (tramite il pulsante d’azione "Deploy") verremmo fermati da uno &lt;a href="http://www.peppedotnet.it/images/spRemoteDeployVs11_4.png" title="Errore sul deploy di una sendbox solution su SharePoint Online" target="_blank"&gt;specifico errore&lt;/a&gt;. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_5.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questo pulsante apre una seconda finestra in cui è possibile specificare l'URL della site collection in cui decidiamo di pubblicare la nostra soluzione e se essere o meno redirezionati all'interno della relativa solution gallery così da effettuare la successiva operazione di attivazione della Sandbox Solution. Come potete vedere in figura e &lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip4.aspx" title="Addio al pulsante di azione package" target="_blank"&gt;come abbiamo già detto&lt;/a&gt;, è possibile pubblicare il .wsp della nostra soluzione anche sul file system (per portalo poi a mano sulla macchina remota ed effettuarne il deploy). Questa opzione è l'unica disponibile nel caso in cui stiamo sviluppando una Farm Solution. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_6.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se l'operazione di publish è andata a buon fine, verrà aperto il vostro browser predefinito e verrete re-indirizzati alla solution gallery della site collection che avete precedentemente indicato. Nel mio caso, ho dovuto prima inserire username e password del mio account Office 365. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_7.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se tutto è andato bene troverete la vostra Sandbox Solution pronta per essere attivata. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/spRemoteDeployVs11_9.jpg" title="Visual Studio 11 for SharePoint Tip#5: deploy remoto" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_9s.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta attivata, potete inserire la web part contenuta nella soluzione in una delle pagine del vostro sito SharePoint. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/spRemoteDeployVs11_10.jpg" alt="Visual Studio 11 for SharePoint Tip#5: deploy remoto" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nel prossimo tip vedremo come effettuare l'upgrade di questa soluzione, sempre da remoto e sempre utilizzando la Developer Preview di Visual Studio 11. 
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27543" title="Visual Studio 11 Developer Preview Web Installer" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27543&lt;/a&gt; (web installer) 
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27538" title="Visual Studio 11 Developer Preview Offiline Installer" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27538&lt;/a&gt; (offline installer)
&lt;br /&gt;
&lt;br /&gt;Infine, vi lascio qui un riepilogo di questa mini-serie di post su Visual Studio 11 e SharePoint 2010.
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip1.aspx" title="Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip2.aspx" title="Visual Studio 11 for SharePoint Tip#2: Silverlight Web Part" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#2: Silverlight Web Part&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip3.aspx" title="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip4.aspx" title="Visual Studio 11 for SharePoint Tip#4: addio all'azione di menu package" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#4: addio all'azione di menu package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/Blog/VisualStudio11ForSharePointTip5RemoteDeploy.aspx" title="Visual Studio 11 for SharePoint Tip#5: deploy remoto" target="_blank"&gt;Visual Studio 11 for SharePoint Tip#5: deploy remoto&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio11ForSharePointTip5RemoteDeploy.aspx" /><issued>2012-2-27T15:0:59+01:00</issued><modified>2012-2-27T15:0:59+01:00</modified></entry><entry><title>Aggiornamenti per SharePoint Online</title><id>/Blog/SharePointOnlineFebruaryUpdates.aspx</id><created>2012-2-23T10:23:31+01:00</created><content type="text/html" mode="escaped">&lt;a title="Microsoft Office 365" href="http://office365.microsoft.com" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Microsoft Office 365" src="http://www.peppedotnet.it/Images/office365.jpg"&gt;&lt;/a&gt;In questo periodo è iniziato un altro giro di service update su Office365. Questa volta SharePoint Online è piuttosto "colpito" dalla cosa, infatti abbiamo alcuni aggiornamenti veramente importanti.
&lt;br /&gt;Dal &lt;a href="http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=1004" title="SharePoint Team Blog" target="_blank"&gt;blog del team di SharePoint&lt;/a&gt; trovate tutte le informazioni del caso. 
&lt;br /&gt;In ogni modo, questi gli aggiornamenti:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Aumento del limite massimo di utenti Active Directory&lt;/span&gt;
&lt;br /&gt;Alla sua nascita, SharePoint Online era stato pensato per avere un limite massimo di 20.000 utenti provenienti dall'integrazione con il proprio Active Directory locale. Ora questo limite è stato passato a &lt;b&gt;50.000&lt;/b&gt;.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Miglioramento del cestino&lt;/span&gt;
&lt;br /&gt;Gli utenti dei piani E (Enterpise) hanno la possibilità, tramite lo SharePoint Online Administration Center, di recuperare dal cestino intere site collection. Così hanno allineato SharePoint Online al &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010ServicePack1AvailableForDownload.aspx" title="Service Pack 1 di SharePoint 2010" target="_blank"&gt;Service Pack 1 di SharePoint 2010&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Miglioramento del meccanismo legato agli utenti esterni&lt;/span&gt;
&lt;br /&gt;Finalmente sarà possibile invitare un vostro collega, partner o cliente utilizzando la sua mail aziendale e non più una mail dei domini hotmail.* o live.* chiramente sempre che questa mail sia collegata ad un windows live id valido.
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration:underline"&gt;Apertura dei PDF dal browser&lt;/span&gt;
&lt;br /&gt;Finalmente sarà possibile aprire un PDF presente in una document library direttamente dal browser tramite Adobe Reader (e sottilineo, finalmente) senza dover scaricare il file in locale. Per la precisione, non è stata abilitata la modalità "Permissive" dell'opzione "Browser File Handling" di SharePoint, ma è stato proprio gestito il caso dei PDF.
&lt;br /&gt;Nel sito del team di SharePoint dicono che è necessaria l'ultima versione di Adobe Reader (la 10.1.2), ma io credo che funzioni anche con qualcuna delle precedenti. Vi farò sapere nel caso.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;A mio parere, hanno dato una bella scossa sta volta. Tutte le funzionalità aggiunte da questo service update, oltre ad essere le più richieste nei vari forum, ecc.. sono veramente utili ed erano delle grosse mancanze al prodotto.
&lt;br /&gt;Ancora ci sono molte cose da migliorare, però siamo sicuramente verso la strada giusta ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointOnlineFebruaryUpdates.aspx" /><issued>2012-2-23T10:23:31+01:00</issued><modified>2012-2-23T10:23:31+01:00</modified></entry><entry><title>Sviluppare su SharePoint 2010 per programmatori ASP.NET @ Community Days 2012</title><id>/Blog/SharePoint2010ForASPNETDevsAtCommuniyDays.aspx</id><created>2012-2-14T10:40:59+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin-left: 10px; float: right;" border="0" alt="Community Days 2012" src="http://www.peppedotnet.it/Images/communityDays600x220.png" /&gt;Mancano solo 2 giorni all'evento ed è arrivato il momento di parlare di quello che vedremo ai &lt;a href="http://www.communitydays.it/" title="Community Days 2012" target="_blank"&gt;Community Days&lt;/a&gt; per quanto riguarda lo sviluppo su SharePoint.
&lt;br /&gt;Innanzitutto segnatevi ora e luogo: &lt;span style="text-decoration: underline"&gt;venerdì 17 febbraio dalle 16.45 alle 17.45 in sala 3 (sala "windows 2")&lt;/span&gt;.
&lt;br /&gt;Seguito il link qui sotto, se volete salvare l'evento sul vostro calendario:
&lt;br /&gt;- &lt;a href="http://www.communitydays.it/events/communitydays-2012/misc03/" title="Sviluppare su SharePoint 2010 per programmatori ASP.NET" target="_blank"&gt;http://www.communitydays.it/events/communitydays-2012/misc03/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;In soldoni, cercheremo di introdurre lo sviluppo su SharePoint 2010 con un taglio pratico e tecnico per chi di voi arriva dalla programmazione di applicazioni web in ASP.NET ed ha un background più o meno forte su tale tecnologia.
&lt;br /&gt;Il passaggio da ASP.NET a SharePoint non è sicuramente immediato sia chiaro. E sia altrettanto chiaro che non riusciremo a coprire tutti gli argomenti che vanno conosciuti per filo e per segno (perchè dovremmo star li per almeno 10/11 giorni di fila :), ma sicuramente uscirete con delle buone basi per poter iniziare.
&lt;br /&gt;Quello che faremo sarà parlare dei principali vantaggi offerti da SharePoint, visto proprio come una vera piattaforma di sviluppo, dei tool che possiamo utilizzare e dell'effort che dobbiamo impiegare per produrre varie tipologie di personalizzazioni ed infine, vedremo le principali tecniche che possiamo sfruttare per creare e deployare applicazioni basate sul prodotto di collaborazione Microsoft.
&lt;br /&gt;
&lt;br /&gt;Tutto ciò lo faremo aprendo Visual Studio 2010 e guardando un'applicazione che ho scritto in questi giorni che, oltre ad essere un'applicazione pronta per l'uso per una semplice gestione fatture (ho detto semplice eh! :), ci permette di toccare una buona parte delle tecniche di sviluppo e delle metodologie che possiamo sfruttare durante lo sviluppo di un'applicazione SharePoint.
&lt;br /&gt;
&lt;br /&gt;Oggi, vi lascio anche i sorgenti. Potete scaricarli a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.SP2010.BestPractices.zip" title="Download sorgenti per sessione Community Days 2012" target="_blank"&gt;PeppeDotNet.SP2010.BestPractices.zip&lt;/a&gt; (3,76 MB)
&lt;br /&gt;
&lt;br /&gt;Attualmente la soluzione è un "work in progress", quindi sarà sicuramente migliorata e rivista. Pensavo di metterla su CodePlex, ma credo che ancora sia un pò troppo giovane.
&lt;br /&gt;In ogni modo.. E' la prima volta che pubblico i sorgenti prima di una sessione, ma penso che sia un buon modo per seguire il discorso o per prepararsi domande specifiche su eventuali dubbi, curiosità, ecc..
&lt;br /&gt;
&lt;br /&gt;Quindi, i consigli sono sempre gli stessi: prima di tutto, passate a salutare! Che è sempre un piacere :)
&lt;br /&gt;Poi, fate tante domande! Perchè, semplicemente, in un'ora non si riesce a spiegare tutto. Lo so! :)
&lt;br /&gt;
&lt;br /&gt;Ci vediamo in Microsoft allora.. ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Community Days.aspx" title="TAG: Community Days"&gt;Community Days&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ForASPNETDevsAtCommuniyDays.aspx" /><issued>2012-2-14T10:40:59+01:00</issued><modified>2012-2-14T10:40:59+01:00</modified></entry><entry><title>Visual Studio 11 for SharePoint Tip#4: addio all’azione di menu “package”</title><id>/Blog/VisualStudio11ForSharePointTip4.aspx</id><created>2012-2-7T12:24:58+01:00</created><content type="text/html" mode="escaped">Una delle piccole cose che mi è saltata all'occhio è stata la sparizione dell'azione di menu "package" dal menu contestuale che si apre facendo click con il tasto destro del mouse su un progetto SharePoint 2010.  
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/vs11ForSharePointDevs_9.jpg" alt="Visual Studio 11 for SharePoint Tip#4: addio all’azione di menu package" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Al suo posto però, è stata aggiunta l'opzione "Publish" (evidenziata in figura) che, oltre a permetterci di pubblicare una soluzione in una site collection SharePoint remota (vedremo in dettaglio questa funzionalità nel prossimo tip), ci da anche la possibilità di generare il file .wsp e di copiarlo in un percorso a nostra scelta. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/spRemoteDeployVs11_15.jpg" alt="Visual Studio 11 for SharePoint Tip#4: addio all’azione di menu package" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Quindi, non spaventatevi :) hanno cambiato solo il nome dell'azione e hanno aggiunto una finestra in più per facilitarci le successive operazioni di deploy della nostra soluzione SharePoint. 
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27543" title="Visual Studio 11 web installer" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27543&lt;/a&gt; (web installer) 
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27538" title="Visual Studio 11 offline installer" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27538&lt;/a&gt; (offline installer)
&lt;br /&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio11ForSharePointTip4.aspx" /><issued>2012-2-7T12:24:58+01:00</issued><modified>2012-2-7T12:24:58+01:00</modified></entry><entry><title>Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution</title><id>/Blog/VisualStudio11ForSharePointTip3.aspx</id><created>2012-1-30T14:48:32+01:00</created><content type="text/html" mode="escaped">Le Sandbox Solution sono state sicuramente la novità più grossa di SharePoint 2010, novità che si è rivelata poi una delle basi per la customizzazione di SharePoint Online (Office 365). Che cos'è una Sandbox Solution lo dovreste ormai sapere (altrimenti, guardatevi &lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-le-Sandboxed-Solutions" title="Video sulle Sandbox Solution di Paolo Pialorsi" target="_blank"&gt;questo video&lt;/a&gt; di &lt;a href="http://www.sharepoint-reference.com/" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt;). Quello che dovete sapere è che all'interno di Visual Studio 11 è stato fatto un particolare lavoro da parte del team di sviluppo che ci ha portato notevoli facilitazioni per la costruzione delle nostre soluzioni. 
&lt;br /&gt;
&lt;br /&gt;Per prima cosa l'intellisense nasconde in automatico tutte quei membri del modello ad oggetti di SharePoint 2010 che non possono essere utilizzati all'interno di una Sandbox Solution. In figura potete vedere che alla proprietà &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.eventreceivers.aspx" title="Proprietà EventReceives" target="_blank"&gt;EventReceivers&lt;/a&gt; (di tipo &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.SPEventReceiverDefinitionCollection.aspx" title="Classe SPEventReceiverDefinitionCollection" target="_blank"&gt;SPEventReceiverDefinitionCollection&lt;/a&gt;) manca il metodo &lt;a href="http://msdn.microsoft.com/en-us/library/ms430598.aspx" title="Metodo Add della classe SPEventReceiverDefinitionCollection" target="_blank"&gt;Add&lt;/a&gt;, che consultando la documentazione vedrete esplicitamente escluso da una soluzione di tipo Sandbox: 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/vs11SandboxSupport_1.jpg" title="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/vs11SandboxSupport_1s.jpg" alt="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Questo risultato era raggiungibile già in passato installando i &lt;a href="http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9" title="Visual Studio 2010 SharePoint Power Tools" target="_blank"&gt;Visual Studio 2010 SharePoint Power Tools&lt;/a&gt; disponibili all'interno della code gallery di Microsoft. Ora invece è tutto integrato all'interno dell'IDE. 
&lt;br /&gt;
&lt;br /&gt;La seconda miglioria invece è legata ad una casistica specifica: quella in cui decido di passare manualmente da una Farm solution ad una Sandbox solution. In questo caso, Visual Studio 11 ferma la compilazione della nostra soluzione ritornandoci un errore specifico, il che ci ripara da errori in fase di run-time una volta effettuato il deploy della Sandbox Solution. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/vs11SandboxSupport_2.jpg" alt="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" /&gt;
&lt;br /&gt;
&lt;br /&gt;Mi sarebbe piaciuto tanto che venisse fuori un bell'errore anche se provassi ad utilizzare (per esempio) le classi SqlConnection, WebClient o una di quelle che effetuano delle operazioni che sono esplicitamente escluse dal contesto limitato di una Sandbox solution, ma niente ancora. Speriamo nella prossima release. 
&lt;br /&gt;
&lt;br /&gt;Infine, per evitare errori in fase di deploy delle nostre applicazioni Sandbox, Visual Studio 11 ci indica tramite la scritta "Farm Solution Only" quali sono i template di elemento che possiamo utilizzare senza problemi all'interno della nostra soluzione e quali invece sono disponibili solo in una Farm Solution. Se scegliamo quindi di aggiungere un nuovo elemento in una Sandbox Solution, ecco la schermata che ci ritroviamo: 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/vs11SandboxSupport_3.jpg" title="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/vs11SandboxSupport_3s.jpg" alt="Visual Studio 11 for SharePoint Tip#3: miglior supporto alle Sandbox Solution" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;La parte relativa allo sviluppo di applicazioni Sandbox è stata sicuramente quella più curata in questa Developer Preview di Visual Studio 11, il che conferma l'attenzione di Microsoft per questa funzionalità. Vedremo poi quali altre funzionalità e/o migliorie ci lasceranno a riguardo nella prossima release di Visual Studio e, soprattutto, nella prossima versione di SharePoint. 
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27543" title="Visual Studio 11 (web installer)" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27543&lt;/a&gt; (web installer) 
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27538" title="Visual Studio 11 (offline installer)" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27538&lt;/a&gt; (offline installer)
&lt;br /&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio11ForSharePointTip3.aspx" /><issued>2012-1-30T14:48:32+01:00</issued><modified>2012-1-30T14:48:32+01:00</modified></entry><entry><title>Visual Studio 11 for SharePoint Tip#2: Silverlight Web Part</title><id>/Blog/VisualStudio11ForSharePointTip2.aspx</id><created>2012-1-23T15:23:12+01:00</created><content type="text/html" mode="escaped">Uno dei nuovi template di progetto che possiamo sfruttare all'interno di Visual Studio 11 (e vi parlo della Developer Preview) per quanto riguarda lo sviluppo di applicazioni custom su piattaforma SharePoint 2010 o SharePoint Online è il template "SharePoint 2010 Silverlight Web Part". 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/vs11ForSharePointDevs_4.jpg" title="SharePoint 2010 Siverlight Web Part in Visual Studio 11" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_4s.jpg" alt="SharePoint 2010 Siverlight Web Part in Visual Studio 11" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Con questo template è possibile creare una soluzione che si preoccupi di effettuare il provisioning dell'omonima "Silverlight Web Part" (componente già presente nell'installazione di default di SharePoint 2010) e di legarla ad una nuova applicazione Silverlight che può essere aggiunta all'interno della soluzione in Visual Studio 11. Come avrete capito quindi, non si tratta di niente di nuovo, è solo una facilitazione per evitare tutte quelle operazioni manuali che eravamo obbligati a fare tramite l'interfaccia grafica di SharePoint stesso: 
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Inserimento nella pagina della "Silverlight Web Part",&lt;/li&gt;&lt;li&gt;caricamento del file .xap proprio della vostra applicazione Silverlight in qualche document library,&lt;/li&gt;&lt;li&gt;modifica delle proprietà della web part così da far riferimento al file .xap tramite una URI.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Dopo aver scelto la tipologia di soluzione che conterrà il codice di provisioning della “Silverlight Web Part” (sono pienamente supportate sia le soluzioni di tipo Sandbox che quelle di tipo Farm), Visual Studio 11 ci chiede di associare un progetto Silverlight alla nostra soluzione (non preoccupatevi, non c'è nessun obbligo, siamo liberi di fare questa associazione anche in un secondo momento). In questo modo le operazioni di compilazione e di creazione del package del nostro progetto SharePoint saranno precedute dalla creazione del file .xap proprio dell'applicazione Silverlight in questione e dalla copia di questo file all'interno di un particolare folder della soluzione SharePoint che verrà poi generata in fase di deploy (nella precedente versione dell'IDE di sviluppo, queste operazioni andavano fatte o a mano o schedulando delle azioni post-build). 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_5.jpg" alt="SharePoint 2010 Siverlight Web Part in Visual Studio 11" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nella schermata di selezione del progetto Silverlight, potete scegliere il nome del progetto, il path, il linguaggio da utilizzare e la versione del plugin con cui lavorare. 
&lt;br /&gt;Fatto questo, possiamo dare un’occhiata alla struttura della soluzione SharePoint che è stata generata. Essa contiene: 
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un elemento di tipo "Silverlight Web Part" con i relativi file di provisioning,&lt;/li&gt;&lt;li&gt;una feature per abilitarla a livello di site collection.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_6.jpg" alt="SharePoint 2010 Siverlight Web Part in Visual Studio 11" /&gt;
&lt;br /&gt;
&lt;br /&gt;Il file di provisioning in questione sono due: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un file .webpart – che contiene il codice XML per la definizione di una "Silverlight Web Part" con qualche parametro custom (tra cui altezza, larghezza, titolo ed URL dell'applicazione Silverlight da renderizzare),&lt;/li&gt;&lt;li&gt;il file Elements.xml – utilizzato per effettuare il provisioning (quindi l'installazione) sia del file .webpart appena visto che del file .xap, rispettivamente all'interno della gallery delle web part della vostra site collection SharePoint e della document library "Site Assets". La document library di destinazione può essere modificata direttamente all'interno del file xml.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Anche in questo caso, se guardiamo il codice all'interno di questi file, non notiamo alcuna differenza con le tecniche di provisioning che conosciamo fin'ora. Questo perchè, ve lo ricordo, &lt;span style="text-decoration:underline"&gt;lato SharePoint non è cambiato nulla&lt;/span&gt;, quello che è cambiato sono solamente i tool all'interno di Visual Studio. Quindi, la definizione della web part è la medesima che abbiamo sempre utilizzato anche per definire le nostre web part personalizzate (in questo caso, al posto di far riferimento ad un assembly custom, si fa riferimento all'assembly di SharePoint che contiene la "Silverlight Web Part"): 
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;webParts&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;webPart&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v3"&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;metaData&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;type&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Microsoft.SharePoint.WebPartPages.SilverlightWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL"&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;importErrorMessage&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;$Resources:core,ImportErrorMessage;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;importErrorMessage&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;metaData&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;data&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;properties&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;property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Title"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="string"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;SilverlightWebPartProject1 - SilverlightWebPart1&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;property&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;property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Description"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="string"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;My Silverlight Web Part&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;property&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;property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Height"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="unit"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;300px&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;property&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;property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Width"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="unit"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;400px&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;property&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;property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; name&lt;span style='color:#0000FF'&gt;="Url"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="string"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;/SiteAssets/SilverlightWebPartProject1/SilverlightWebPart1/SilverlightProject1.xap&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;property&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;properties&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;data&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;webPart&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;webParts&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Mentre la parte di provisioning invece, sfrutta due diversi moduli per installare prima il file .xap relativo alla nostra applicazione Silverlight e poi il file .webpart: 
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;Module&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="SilverlightWebPart1"&lt;/span&gt; List&lt;span style='color:#0000FF'&gt;="113"&lt;/span&gt; Url&lt;span style='color:#0000FF'&gt;="_catalogs/wp"&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;File&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Path&lt;span style='color:#0000FF'&gt;="SilverlightWebPart1\SilverlightWebPart1.webpart"&lt;/span&gt; Url&lt;span style='color:#0000FF'&gt;="SilverlightWebPartProject1_SilverlightWebPart1.webpart"&lt;/span&gt; Type&lt;span style='color:#0000FF'&gt;="GhostableInLibrary"&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;Property&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="Group"&lt;/span&gt; Value&lt;span style='color:#0000FF'&gt;="Custom"&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;File&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;Module&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;Module&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="SilverlightWebPart1"&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;File&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Path&lt;span style='color:#0000FF'&gt;="SilverlightWebPart1\SilverlightProject1.xap"&lt;/span&gt; Url&lt;span style='color:#0000FF'&gt;="SiteAssets/SilverlightWebPartProject1/SilverlightWebPart1/SilverlightProject1.xap"&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;Module&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se non conoscete le tecniche di provisioning di SharePoint 2010 o la sintassi per la definizione di una web part, questo è sicuramente un bell'aiuto e quindi un ottimo inizio per approfondire lo studio (a riguardo potete guardare il mio video su channel9). 
&lt;br /&gt;
&lt;br /&gt;L'applicazione Silverlight invece, è stata creata con le referenze delle due librerie del Client Object Model di SharePoint 2010, così da permettere l'interazione con i contenuti server-side. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_7.jpg" alt="SharePoint 2010 Siverlight Web Part in Visual Studio 11" /&gt;
&lt;br /&gt;
&lt;br /&gt;Facendo un primo build della soluzione Visual Studio, ci accorgiamo che il file .xap che rappresenta la nostra applicazione Silverlight viene compilato ed inserito all'interno del pacchetto SharePoint (il classico .wsp), precisamente all'interno del folder "SilverlightWebPart1", proprio come specificato dal file XML di provisioning che abbiamo visto sopra. In questo modo, una volta installata la soluzione all'interno di una farm SharePoint e una volta abilitata la relativa feature, siamo in grado di inserire la "Silverlight Web Part" che punta alla nostra applicazione Silverlight, all'interno di una pagina SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/vs11ForSharePointDevs_8.jpg" alt="SharePoint 2010 Siverlight Web Part in Visual Studio 11" /&gt;
&lt;br /&gt;
&lt;br /&gt;Come vi dicevo, niente di nuovo. Abbiamo un template di progetto ed un template di elemento in più per evitare di pubblicare a mano le nostre applicazioni Silverlight all'interno di SharePoint 2010.
&lt;br /&gt;Se voltete scaricarvi i sorgenti d'esempio eccoli qua:
&lt;br /&gt;- ZIP (bho kb)
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27543" title="Visual Studio 11 Developer Preview (web installer)" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27543&lt;/a&gt; (web installer) 
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27538" title="Visual Studio 11 Developer Preivew (offline installer)" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27538&lt;/a&gt; (offline installer)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio11ForSharePointTip2.aspx" /><issued>2012-1-23T15:23:12+01:00</issued><modified>2012-1-23T15:23:12+01:00</modified></entry><entry><title>Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento </title><id>/Blog/VisualStudio11ForSharePointTip1.aspx</id><created>2012-1-16T16:3:1+01:00</created><content type="text/html" mode="escaped">Come dalla versione 2010 anche Visual Studio 11 (non si sa ancora quale sarà il nome ufficiale) ha al suo interno gli strumenti di sviluppo per costruire applicazioni SharePoint, con qualche funzionalità aggiunta e parecchie cose messe a posto qua e la rispetto alla versione precedente dei tool. Per far subito chiarezza, queste novità riguardano SOLO Visual Studio e NON SharePoint, in quanto la beta pubblica della prossima versione si presume (quanto meno questi sono i “rumors”) che venga rilasciata a fine 2012 e tutte le funzionalità sono legate SOLO allo sviluppo su SharePoint 2010 o SharePoint Online. Quindi dobbiamo metterci il cuore in pace ed aspettare ancora un pò. Poi, se le cose cambieranno nel corso di quest’anno io non lo so di sicuro :) 
&lt;br /&gt;
&lt;br /&gt;Detto questo, il primo impatto che si ha con il nuovo ambiente di sviluppo riguardo la parte per applicazioni SharePoint è un pò diverso dal precedente. La schermata di creazione di un nuovo progetto infatti, ha meno template di progetto rispetto a quelli con cui siamo stati abituati a lavorare fin’ora, assieme ad un singolo nuovo template. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/vs11ForSharePointDevs_1.jpg" title="Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento " target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/vs11ForSharePointDevs_1s.jpg" alt="Visual Studio 11 for SharePoint Tip#1: template di progetto ed elemento " border="0" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Una delle cose che mi è venuta subito all’occhio è la possibilità di creare progetti SharePoint anche con il nuovo framework 4.5, il che anticipa sicuramente la versione con cui sarà creato SharePoint vNext. Chiaramente però, allo stato attuale delle cose, quindi nel caso in cui volessimo utilizzare Visual Studio 11 per sviluppare sulla versione 2010 di SharePoint o su SharePoint Online, dobbiamo comunque scegliere la versione 3.5 come target Framework per il nostro progetto, perchè SharePoint 2010 e soprattutto le librerie del suo modello ad oggetti (come &lt;a href="http://www.peppedotnet.it/Blog/MicrosoftSharePointIsNotSupportedWithVersion4OfTheNetFramework.aspx" title="Le librerie di SharePoint 2010 possono essere usate solo su applicazioni compilate con il .NET Framework 3.5" target="_blank"&gt;vi dicevo&lt;/a&gt;) supportano solo quella specifica versione del .NET Framework. 
&lt;br /&gt;
&lt;br /&gt;Detto questo, vediamo nel dettaglio tutte le tipologie di progetto che possiamo creare: 
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;SharePoint 2010 Project&lt;/span&gt; – è il "classico" progetto vuoto, che in Visual Studio 2010 corrispondeva proprio al template “Empty SharePoint Project” e che crea la struttura di base del package relativo alla nostra soluzione.&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;SharePoint 2010 Silverlight Web Part&lt;/span&gt; – è l’unico template aggiunto e permette la creazione di una soluzione che contiene il provisioning di della “Silverlight Web Part” di SharePoint 2010 che fa riferimento ad una nuova applicazione Silverlight che può essere inclusa nella soluzione.&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;SharePoint 2010 Visual Web Part&lt;/span&gt; – è il template che crea una nuova soluzione SharePoint con all’interno una singola Visual Web Part. Rispetto alla versione precedente dei tool di sviluppo, abbiamo la possibilità di scegliere questo template sia nel caso di una sandbox solution che nel caso di una farm solution. I dettagli riguardo questa nuova funzionalità li vedremo in seguito. Promesso.&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Import SharePoint 2010 Solution Package&lt;/span&gt; – è la funzionalità di Visual Studio che permette di importare e modificare una soluzione SharePoint già confezionata (un file .wsp per intenderci). Riguardo questa funzionalità ad oggi non ci sono particolari cambiamenti rispetto alla versione precedente dell’IDE.&lt;/li&gt;&lt;li&gt;&lt;span style="text-decoration: underline"&gt;Import Reusable SharePoint 2010 Workflow&lt;/span&gt; – è la funzionalità di Visual Studio che permette di importare un workflow già confezionato (anche in questo caso in un file .wsp) per poi modificarlo e re-installarlo. Anche riguardo questa funzionalità, non ci sono cambiamenti rispetto al passato.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Solo 5 progetti contro i 14 presenti su Visual Studio 2010. Perchè? Il motivo preciso non lo so, bisognerebbe chiedere al team di sviluppo, ma secondo me la ragione principale è stata data dai vari feedback degli utenti. Nessuno per creare una web part scegliava il template di progetto “Web Part”, ma passava sempre per un progetto vuoto così da non dover rinominare il file creato in automatico da “WebPart1” al nome preferito per la propria web part. Lo stesso per tutte le altre tipologie di progetto. Una volta creato il progetto infatti, è possibile trovare esattamente tutte le tipologie di personalizzazioni che erano già presenti all’interno di Visual Studio 2010, con l’aggiunta della “Silverlight Web Part”. 
&lt;br /&gt;
&lt;br /&gt;Per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27543" title="Visual Studio 11 Developer Preview" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27543&lt;/a&gt; (web installer)
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=27538" title="Visual Studio 11 Developer Preview" target="_blank"&gt;http://www.microsoft.com/download/en/details.aspx?id=27538&lt;/a&gt; (offline installer)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Visual Studio 11.aspx" title="TAG: Visual Studio 11"&gt;Visual Studio 11&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VisualStudio11ForSharePointTip1.aspx" /><issued>2012-1-16T16:3:1+01:00</issued><modified>2012-1-16T16:3:1+01:00</modified></entry><entry><title>HTML5 fields per SharePoint 2010</title><id>/Blog/HTML5InputFieldsForSharePoint2010.aspx</id><created>2012-1-9T10:58:51+01:00</created><content type="text/html" mode="escaped">E' da un pò che sto studiando HTML5, penso sia ormai un dovere per tutti noi sviluppatori web. Nella fine dello scorso anno ho già fatto &lt;a href="http://html5videowebpart.codeplex.com/" title="HTML5 Video Web Part for SharePoint 2010" target="_blank"&gt;qualche esperimento&lt;/a&gt; e sicuramente ci sarà da divertirsi nei prossimi anni.
&lt;br /&gt;La cosa bella è che vengono aggiunte tutte quelle funzionalità per cui prima si doveva pensare qualcosa di custom utilizzando javascript o altro. Un esempio lampante sono le nuove tipologie di controlli input, che permettono di catalogare una semplice casella ti testo secondo un'insieme di valori a caratterizzare il tipo di dato che dovrà essere inserito dall'utente. 
&lt;br /&gt;Questi valori vanno a sostituire il valore "text" che eravamo soliti utilizzare all'interno del tag "input" per il renderizzare la nostra casella di testo.
&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;input&lt;/span&gt;&lt;span style='color:#FF0000'&gt; id&lt;span style='color:#0000FF'&gt;="txtAge"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="text"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;I valori possibili per tale attributo "type", ad oggi (perchè ancora le specifiche non sono complete), sono i seguenti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;email&lt;/li&gt;&lt;li&gt;url&lt;/li&gt;&lt;li&gt;number&lt;/li&gt;&lt;li&gt;range&lt;/li&gt;&lt;li&gt;Date pickers (date, month, week, time, datetime, datetime-local)&lt;/li&gt;&lt;li&gt;search&lt;/li&gt;&lt;li&gt;color&lt;/li&gt;&lt;/ul&gt;Ecco quindi che una casella di input pensata per inserire gli anni di un utente, potrà essere scritta in questo modo:
&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;input&lt;/span&gt;&lt;span style='color:#FF0000'&gt; id&lt;span style='color:#0000FF'&gt;="txtAge"&lt;/span&gt; type&lt;span style='color:#0000FF'&gt;="number"&lt;/span&gt; step&lt;span style='color:#0000FF'&gt;="1"&lt;/span&gt; min&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt; max&lt;span style='color:#0000FF'&gt;="123"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come referenza riguardo questi nuovi elementi HTML potete utilizzare il sito W3Schools.com, da cui io stesso ho preso la lista che avete appena letto.
&lt;br /&gt;- &lt;a href="http://www.w3schools.com/html5/html5_form_input_types.asp" title="HTML5 Input types" target="_blank"&gt;http://www.w3schools.com/html5/html5_form_input_types.asp&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere, allo stato attuale delle specifiche, solo Chrome ed Opera supportano a pieno queste nuove tipologie di input. Per gli altri browser dovremmo aspettare ancora un pò.
&lt;br /&gt;Invece, un campo in cui questi nuovi controlli di input danno il massimo e sono già ampiamente supportati è il campo degli applicativi mobile. In base alla tipoloia di campo infatti, uno smartphone presenta all'utente una configurazione differente della tastiera, così da permettere un'input contestualizzato in base al campo che l'utente seleziona. Qunidi un campo di tipo "number" verrà gestito con la tastiera con soli numeri, il campo di tipo "mail" avrà la tastiera con la chiocchiola e così via.
&lt;br /&gt;
&lt;br /&gt;Per non restare indietro quindi, mi è venuta l'idea di iniziare ad applicare i vantaggi di questi tag all'interno di SharePoint 2010, perchè il concetto di "campo" o "colonna" in SharePoint è ormai radicato da anni e mi è sembrato un buon punto di estensione del prodotto in ottica futura.
&lt;br /&gt;Ecco quindi che ne è uscito un progettino, ancora in fase primordiale, che ci permette di sfruttare queste funzionalità del browser anche su form di liste e document library presenti su siti SharePoint. Qua sotto, potete vedere un esempio d'uso del campo "number" con Chrome.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/html5Fields.png" alt="HTML5 fields for SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;L'indirizzo è il seguente: &lt;a href="http://html5spfields.codeplex.com/" target="_blank" title="HTML5 fields for SharePoint"&gt;http://html5spfields.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Attualmente ho sviluppato solo i campi di tipo "mail" e "number". Non ho ancora pubblicato una versione totalmente funzionante perchè mi manca da sviluppare le funzionalità di visualizzazione in percentuale e di rendering di un valore numerico con uno o più decimali (proprio come fa il campo numerico di default di SharePoint), però dai sorgenti potete già scaricare la soluzione, provarla e darmi qualsiasi tipo di feedback.
&lt;br /&gt;Ho in previsione di sviluppare quanto meno i campi di tipo "range" (molto carino), "url" e quelli legati alle date, ma non posso darvi la certezza assoluta ancora ;)
&lt;br /&gt;Comunque, come vi dicevo, con Chrome e con Opera non avete problemi di utilizzo. Internet Explorer 9 non ha implementato nessuna di queste novità ancora.
&lt;br /&gt;
&lt;br /&gt;Come sempre, se c'è qualche volenteroso che mi vuole dare una mano io son contento :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/HTML5.aspx" title="TAG: HTML5"&gt;HTML5&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/HTML5 Fields.aspx" title="TAG: HTML5 Fields"&gt;HTML5 Fields&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HTML5InputFieldsForSharePoint2010.aspx" /><issued>2012-1-9T10:58:51+01:00</issued><modified>2012-1-9T10:58:51+01:00</modified></entry><entry><title>Il Client Object Model di SharePoint 2010 per applicazioni Silverlight</title><id>/Blog/VideoClientObjectModelForSilverlight.aspx</id><created>2012-1-7T14:1:39+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 10px; float: right;" alt="Channel9" src="http://www.peppedotnet.it/images/channel9.png" /&gt;Continua il nostro percorso di sviluppo su SharePoint 2010. Settimana scorsa (o meglio, l'anno scorso :) abbiamo introdotto l'architettura e il funzionamento di base che sta dietro al Client Object Model assieme al primo video dedicato all'utilizzo di tali librerie in applicazioni .NET.
&lt;br /&gt;Questa volta vedremo come sfruttare le classi e i metodi del secondo dei tre modelli disponibili per lo sviluppo di Rich Internet Aplpication in Silverlight che si interfacciano con la piattaforma di collaborazione Microsoft. Nel particolare vedremo come possiamo effettuare tutte le operazioni CRUD su liste e document library e come comprendere a pieno il meccanismo di comunicazione asincrona tra l'applicazione eseguita sul browser dell'utente e il server SharePoint.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;A riguardo, avevo pubblicato un post su come installare applicazioni Silverlight all'interno di SharePoint Online sfruttando le potenzialità di una sandbox solution e un pò delle nozioni di provisioning su SharePoint. Ecco qua il post:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Blog/InstallSilverlightAppsInOffice365SharePointOnline.aspx" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;http://www.peppedotnet.it/Blog/InstallSilverlightAppsInOffice365SharePointOnline.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare il video:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo5.zip" title="Sorgenti video" target="_blank"&gt;BEIT_Demo5.zip&lt;/a&gt; (794 Kb)
&lt;br /&gt;
&lt;br /&gt;E se volete invece riguardarvi gli altri, ecco qua la lista completa:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Il modello ad oggetti di SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a title="Modello per applicazioni .NET" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-Silverlight" title="Modello per applicazioni Silverlight" target="_blank"&gt;Modello per applicazioni Silverlight&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Modello per personalizzazioni Javascript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;LINQ to SharePoint (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;Sandbox Solutions in SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Workflow con SharePoint 2010 e Visual Studio 2010 (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Nonostante è ormai chiaro che Silverlight ha una vita molto breve a favore di HTML5 &amp; co. può essere ancora un'opzione valida per molti casi. Basti pensare che ancora la maggior parte delle realtà aziendali italiane utilizza browser obsoleti. 
&lt;br /&gt;Nella prossima puntata invece vedremo come interagire con i contenuti di SharePoint 2010 tramite javascript cosa che, in ottica vNext, è sicuramente molto più interessante ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a title="TAG: SharePoint" href="http://www.peppedotnet.it/Tags/SharePoint.aspx"&gt;SharePoint&lt;/a&gt;] [&lt;a title="TAG: SharePoint 2010" href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a title="TAG: Client Object Model" href="http://www.peppedotnet.it/Tags/Client Object Model.aspx"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VideoClientObjectModelForSilverlight.aspx" /><issued>2012-1-7T14:1:39+01:00</issued><modified>2012-1-7T14:1:39+01:00</modified></entry><entry><title>Non sopportate le query CAML? C'&#232; Camlex.NET</title><id>/Blog/Camlex.aspx</id><created>2012-1-2T14:19:22+01:00</created><content type="text/html" mode="escaped">Innanzitutto buon anno a tutti! ;)
&lt;br /&gt;
&lt;br /&gt;Per chi di voi non ha mai trovato feeling con il linguaggio CAML per effettuare query sui contenuti di SharePoint, volevo segnalarvi un progetto molto carino che viene portato avanti da &lt;a href="http://sadomovalex.blogspot.com/" title="Alexey Sadomov" target="_blank"&gt;Alexey Sadomov&lt;/a&gt; (MVP SharePoint). 
&lt;br /&gt;Si chiama Camlex.NET e non è altro che una libreria .NET che ci permette di scrivere le nostre query CAML utilizzando una sintassi più semplice e sicuramente più affine al paradigma di programmazione ad oggetti.
&lt;br /&gt;Potete trovate la libreria compilata e i sorgenti direttamente su CodePlex a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://camlex.codeplex.com/" title="Camlex.NET on Codeplex" target="_blank"&gt;http://camlex.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Attualmente è alla versione 3.0 e ti permette di produrre query CAML più o meno complicate.
&lt;br /&gt;Io resto dell'idea che secondo me conviene impararselo per bene CAML, perchè comunque hai sempre il controllo completo sulla tua query, però è sicuramente un tool molto interessante.
&lt;br /&gt;Inoltre, potete utilizzare un tool online per avere una preview delle vostre query CAML:
&lt;br /&gt;- &lt;a href="http://camlex-online.org/" title="Camlex.NET online tool" target="_blank"&gt;http://camlex-online.org/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero possa essere utile a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CAML.aspx" title="TAG: CAML"&gt;CAML&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Camlex.aspx" /><issued>2012-1-2T14:19:22+01:00</issued><modified>2012-1-2T14:19:22+01:00</modified></entry><entry><title>Il Client Object Model di SharePoint 2010 per applicazioni .NET</title><id>/Blog/VideoClientObjectModelForNetClr.aspx</id><created>2011-12-28T17:53:30+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 10px; float: right;" alt="Channel9" src="http://www.peppedotnet.it/images/channel9.png" /&gt;Continua il nostro percorso di sviluppo su SharePoint 2010. Settimana scorsa abbiamo introdotto l'architettura e il funzionamento di base che sta dietro al Client Object Model, una delle novità della nuova versione per noi sviluppatori.
&lt;br /&gt;Questa volta vedremo come sfruttare le classi e i metodi di uno dei tre modelli disponibili per lo sviluppo di applicazioni .NET che girano al di fuori del contesto di SharePoint (quindi console application, windows application, windows service, applicazioni asp.net, e chi più ne ha più ne metta). Nel particolare vedremo come possiamo effettuare tutte le operazioni CRUD su liste e document library, come sfruttare la sintassi LINQ per effettuare delle query filtrate e come applicare la gestione delle eccezioni.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;Se preferite leggere e volete andare un pò più nel dettaglio riguardo questo argomento, potete far riferimento agli articoli che ho scritto per SharePointCommunity.it:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Introduzione alle Client-Side API di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" target="_blank"&gt;Introduzione alle Client-Side API di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Operazioni CRUD con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" target="_blank"&gt;Operazioni CRUD con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione di liste con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15" target="_blank"&gt;Gestione di liste con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16" target="_blank"&gt;Gestione delle eccezioni con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=20" target="_blank"&gt;Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Query LINQ tramite il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=24" target="_blank"&gt;Query LINQ tramite il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare i video. Questi, sono gli stessi della precedente puntata, me ve li rimetto per semplicità:
&lt;br /&gt;- &lt;a title="Sorgenti del video: SharePoint 2010, introduzione al modello client-side" href="http://www.peppedotnet.it/zip/BEIT_Demo4.zip" target="_blank"&gt;BEIT_Demo4.zip&lt;/a&gt; (30Kb)
&lt;br /&gt; 
&lt;br /&gt;E se volete invece riguardarvi gli altri, ecco qua la lista completa: 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Il modello ad oggetti di SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-client-side-object-model-con-NET" title="Modello per applicazioni .NET" target="_blank"&gt;Modello per applicazioni .NET&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Modello per applicazioni Silverlight&lt;/li&gt;&lt;li&gt;Modello per personalizzazioni Javascript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;LINQ to SharePoint (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;Sandbox Solutions in SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Workflow con SharePoint 2010 e Visual Studio 2010 (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;In parole povere.. avete a disposizione tutto quanto :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VideoClientObjectModelForNetClr.aspx" /><issued>2011-12-28T17:53:30+01:00</issued><modified>2011-12-28T17:53:30+01:00</modified></entry><entry><title>Come creare una webpart page da codice</title><id>/Blog/HowToCreateWebPartPageProgrammatically.aspx</id><created>2011-12-26T17:9:28+01:00</created><content type="text/html" mode="escaped">Una webpart page è una delle possibili pagine che possiamo creare all'interno di un sito SharePoint. Queste pagine, che esistono fin dalla versione 2003 del prodotto, si differenziano dalle application page in quanto permettono la modifica del proprio contenuto tramite il browser (tramite le varie webpart zone).
&lt;br /&gt;Dovete sapere che tramite il modello ad oggetti di SharePoint potete tranquillamente creare una di queste pagine, conoscendo però a priori la tipologia di template che volete utilizzare.
&lt;br /&gt;Ecco qua il codice che dovete scrivere per raggiungere questo obbiettivo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPWeb web = SPContext.Current.Web;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//creo una document library per contentere la mia nuova webpart page&lt;/span&gt;
Guid listId = web.Lists.Add(&lt;span style="color: #A31515"&gt;"Pages"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;""&lt;/span&gt;, SPListTemplateType.DocumentLibrary);
&lt;br /&gt;SPList list = web.Lists[listId];
&lt;br /&gt;list.OnQuickLaunch = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;
&lt;br /&gt;list.Update();
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//creo la webpart page&lt;/span&gt;
&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; postInformation = &lt;span style="color: #A31515"&gt;"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"&lt;/span&gt; +
&lt;br /&gt;&lt;span style="color: #A31515"&gt;"&lt;Method&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetList Scope=\"Request\"&gt;"&lt;/span&gt; + listId + &lt;span style="color: #A31515"&gt;"&lt;/SetList&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"ID\"&gt;New&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"Cmd\"&gt;NewWebPage&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"Type\"&gt;WebPartPage&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"WebPartPageTemplate\"&gt;2&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"Title\"&gt;TITOLO PAGINA&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;      &lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"Overwrite\"&gt;true&lt;/SetVar&gt;"&lt;/span&gt; +
&lt;br /&gt;&lt;span style="color: #A31515"&gt;"&lt;/Method&gt;"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; processBatch = web.ProcessBatchData(postInformation);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così facendo vedrete una nuova webpart page comparire all'interno della document library specificata (nel nostro caso, abbiamo creato da zero la library "Pages"), con il template n°2. 
&lt;br /&gt;L'elenco dei template da poter utilizzare è lo stesso che trovate nella pagina di creazione di una nuova webpart page e, se volete conoscere i vari identificativi di ogni template (in generale seguono l'ordine dall'1 all'8), potete trovare le relative pagine fisiche al seguente percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\[LCID]\STS\DOCTEMP\SMARTPGS&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questa tecnica è molto utile sia in fase di installazione della nostra applicazione ma soprattutto quando stiamo sviluppando una soluzione di tipo Sandbox, dove non possiamo sfruttare le funzionalità di un'application page normale e dobbiamo dotare in egual modo la nostra applicazione di intere pagine dedicate a funzionalità specifiche. Questo perchè sia la classe &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" title="Classe SPWeb" target="_blank"&gt;SPWeb&lt;/a&gt; che il metodo &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx" title="Metodo ProcessBatchData" target="_blank"&gt;ProcessBatchData&lt;/a&gt; sono disponibili all'interno del subset di membri che possono essere utilizzati in una soluzione Sandbox.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/HowToCreateWebPartPageProgrammatically.aspx" /><issued>2011-12-26T17:9:28+01:00</issued><modified>2011-12-26T17:9:28+01:00</modified></entry><entry><title>Video sullo sviluppo per SharePoint 2010 all'interno di Channel9</title><id>/Blog/SharePoint2010DevelopmentVideoOnChannel9.aspx</id><created>2011-12-21T10:0:41+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/channel9.png" alt="Channel9" style="float: right; margin: 10px" /&gt;Vi segnalo che da oggi, grazie alla disponibilità di &lt;a href="http://blogs.msdn.com/b/pietrobr/" title="Pietro Brambati" target="_blank"&gt;Pietro Brambati&lt;/a&gt;, i miei video riguardo il percorso formativo per chi vuole imparare a sviluppare su SharePoint 2010 sono stati pubblicati anche su &lt;a href="http://channel9.msdn.com/Tags/sharepoint?lang=it" title="Video sullo sviluppo per SharePoint 2010 su Channel9" target="_blank"&gt;Channel9&lt;/a&gt;.
&lt;br /&gt;Per chi di voi che inizia ad approcciarsi al prodotto, come &lt;a href="http://www.peppedotnet.it/Blog/VideoAboutSharePoint2010Development.aspx" title="Percorso formativo sullo sviluppo in SharePoint 2010 su Microsoft BEIT" target="_blank"&gt;già vi dicevo&lt;/a&gt;, sono sicuramente un'ottima fonte tecnica da cui partire, oltre a libri, documentazione e tutto il resto.
&lt;br /&gt;
&lt;br /&gt;Nelle ultime due pubblicazioni, avevamo visto il &lt;a href="http://www.peppedotnet.it/Blog/VideoAboutSharePoint2010Development.aspx" title="Video introduttivo al percorso di formazione su SharePoint 2010" target="_blank"&gt;video introduttivo al percorso&lt;/a&gt; e quello riguardo lo &lt;a href="http://www.peppedotnet.it/Blog/WebPartInSharePoint2010HowToVideo.aspx" title="Sviluppo di web part su SharePoint 2010" target="_blank"&gt;sviluppo di web part&lt;/a&gt;.
&lt;br /&gt;Oggi vi segnalo il primo di tre screencast sullo sviluppo tramite il Client Object Model di SharePoint 2010, una delle novità più importanti portate dalla piattaforma di collaborazione Microsoft. Un vero e proprio set di librerie in grado di permetterci di scrivere applicazioni che girano all'esterno del contesto di SharePoint ma che sono comunque in grado di interagire con i suoi contenuti.
&lt;br /&gt;In questo video si presenta un'introduzione all'architettura e al funzionamento generale, poi poi passare a video più specifici che utilizzano il Client Object Model per JavaScript, Silveright e il .NET CLR.
&lt;br /&gt;
&lt;br /&gt;&lt;iframe style="height:288px;width:512px" src="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side/player?w=512&amp;h=288" frameBorder="0" scrolling="no" &gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare i video. Ecco quelli legati a questo video:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo4.zip" title="Sorgenti del video: SharePoint 2010, introduzione al modello client-side" target="_blank"&gt;BEIT_Demo4.zip&lt;/a&gt; (30Kb)
&lt;br /&gt;
&lt;br /&gt;E se volete invece riguardarvi gli altri, ecco qua la lista completa:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-introduzione-alle-novit-per-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Il modello ad oggetti di SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a title="Sviluppo di Web Part" href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-web-part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;&lt;a href="http://channel9.msdn.com/Blogs/PietroBrambati/SharePoint-2010-Introduzione-al-modello-client-side" title="Introduzione al modello ad oggetti Client-Side di SharePoint 2010" target="_blank"&gt;Introduzione al modello ad oggetti client-side&lt;/a&gt; (Peppe)&lt;ul&gt;&lt;li&gt;Modello per applicazioni .NET&lt;/li&gt;&lt;li&gt;Modello per applicazioni Silverlight&lt;/li&gt;&lt;li&gt;Modello per personalizzazioni Javascript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;LINQ to SharePoint (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;Sandbox Solutions in SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Workflow con SharePoint 2010 e Visual Studio 2010 (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Buona visione ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Channel9.aspx" title="TAG: Channel9"&gt;Channel9&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/BeIT.aspx" title="TAG: BeIT"&gt;BeIT&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010DevelopmentVideoOnChannel9.aspx" /><issued>2011-12-21T10:0:41+01:00</issued><modified>2011-12-21T10:0:41+01:00</modified></entry><entry><title>Modificare la modalit&#224; di scadenza della password di Office 365</title><id>/Blog/ModifyPasswordExpirationInOffice365.aspx</id><created>2011-12-13T14:2:41+01:00</created><content type="text/html" mode="escaped">E' da un pò che mi hanno attivato l'account su Office 365 dopo la fase beta e proprio oggi, cercando di accedere alla posta, Outlook mi ha avvisato di un malfunzionamento nel download dei nuovi messaggi dall'account Exchange Online rimandandomi ad un link per la risoluzione.
&lt;br /&gt;Questa la schermata cui mi trovo di fronte una volta aperta la pagina proposta da Outlook:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SPOnline_ChangePasswordPolicy_01.png" alt="Modificare la modalità di scadenza della password di Office 365" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questo accade perchè la password di ogni account Office 365 è settata di default in modo tale da scadere ogni 90 giorni.
&lt;br /&gt;C'è però il modo di cambiare questo comportamento, utilizzando PowerShell e precisamente il toolkit "Microsoft Online Services for PowerShell", che potete scaricare a questi indirizzi:
&lt;br /&gt;- X86: &lt;a href="http://g.microsoftonline.com/0BD00en-US/565" title="Microsoft Online Services for PowerShell" target="_blank"&gt;http://g.microsoftonline.com/0BD00en-US/565&lt;/a&gt;
&lt;br /&gt;- X64: &lt;a href="http://g.microsoftonline.com/0bd00en-us/557" title="Microsoft Online Services for PowerShell" target="_blank"&gt;http://g.microsoftonline.com/0bd00en-us/557&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta installato, all'interno del menu start aprite il programma "Microsoft Online Services Module for Windows Powershell" ed eseguite il comando "Connect-MsolService" per accedere ai servizi di Office 365. Vi verrà richiesto l'account di amministrazione della vostra licenza Office 365.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SPOnline_ChangePasswordPolicy_02.png" alt="Modificare la modalità di scadenza della password di Office 365" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta connessi, possiamo eseguire:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;il comando "Get-MsolUser" per vedere l'elenco di tutti gli utenti presenti all'interno della vostra installazione di Office 365,&lt;/li&gt;&lt;li&gt;il comando "Get-MsolUser –UserPrincipalName [mail_user]" per recuperare il vostro utente (nel mio caso è unico),&lt;/li&gt;&lt;li&gt;il comando "Set-MsolUser –UserPrincipalName [mail_user] -PasswordNeverExpires $True" per disabilitare la scadenza della password su un particolare utente&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SPOnline_ChangePasswordPolicy_03.png" alt="Modificare la modalità di scadenza della password di Office 365" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nel mio caso ho utilizzato il comando "Get-MsolUser | Set-MsolUser -PasswordNeverExpires $True" che disabilita la scadenza della password su tutti gli utenti.
&lt;br /&gt;Spero che vi possa essere utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/PowerShell.aspx" title="TAG: PowerShell"&gt;PowerShell&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ModifyPasswordExpirationInOffice365.aspx" /><issued>2011-12-13T14:2:41+01:00</issued><modified>2011-12-13T14:2:41+01:00</modified></entry><entry><title>Avete le date sbagliate in SharePoint Online?</title><id>/Blog/WrongDatesInOffice365SharePointOnline.aspx</id><created>2011-11-14T10:29:48+01:00</created><content type="text/html" mode="escaped">A me è capitato e credo che possa a capitare quanto meno ai primi che hanno acquistato una licenza di &lt;a href="http://www.office365.com" title="Office 365" target="_blank"&gt;Office 365&lt;/a&gt; e a quelli che, come me, venivano dalla beta.
&lt;br /&gt;Facendo caso alle date di creazione e di modifica dei vari documenti all'interno delle mie document libaries, mi sono accorto che non erano quelle giuste. Oltre al formato (che era inglese, su un sito creato attraverso il language pack italiano), era diversa propriol'ora visualizzata.
&lt;br /&gt;Questo perchè di default erano selezionati i regional settings per l'america, qunidi era tutto "shiftato" di 6 ore.
&lt;br /&gt;Per risolvere la cosa e configurare correttamente la mia site collection SharePoint Online, basta entrare all'interno dei "site settings" dal sito padre di tutti, selezionare la voce "Impostazione internazionali (o Regional settings per chi ha creato il sito utilizzando il language pack inglese) e scegliere la time zone desiderata, il formato, ecc..
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/SPOnline_RegionalSettings.jpg" alt="Regional settings in SharePoint Online" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo vedrete che tutto tornerà alla normalità.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WrongDatesInOffice365SharePointOnline.aspx" /><issued>2011-11-14T10:29:48+01:00</issued><modified>2011-11-14T10:29:48+01:00</modified></entry><entry><title>Office 365 Integration Module Beta per SBS 2011</title><id>/Blog/Office365IntegrationModuleBetaForSBS2011.aspx</id><created>2011-11-1T21:45:40+01:00</created><content type="text/html" mode="escaped">Dal &lt;a href="http://blogs.technet.com/b/sbs/" title="Blog di Small Business Server" target="_blank"&gt;blog di Small Business Server&lt;/a&gt; l'annuncio della disponibilità, in versione beta, del modulo di integrazione di SBS con Office 365.
&lt;br /&gt;Questo modulo modificherà l'attuale Dashboard di SBS 2011 in modo da permettere ad utenti amministratori, la gestione e l'esecuzione di alcune attività su una particolare sottoscrizione Office 365.
&lt;br /&gt;L'aspetto interessante è sicuramente quello di poter gestire in maniera centralizzata le utenze locali e quelle sul cloud, come se fossero uniche e far si che gli utenti riescano ad entrare all'interno dei vari applicativi di Office 365 con il medesimo account della propria rete locale.
&lt;br /&gt;
&lt;br /&gt;Per maggiori informazioni, vi lascio il link diretto al post:
&lt;br /&gt;&lt;a href="http://blogs.technet.com/b/sbs/archive/2011/11/01/download-the-microsoft-174-office-365-integration-module-beta-for-windows-174-small-business-server-2011-essentials-today.aspx" title="Office 365 Integration Module Beta per SBS 2011" target="_blank"&gt;http://blogs.technet.com/b/sbs/archive/2011/11/01/download-the-microsoft-174-office-365-integration-module-beta-for-windows-174-small-business-server-2011-essentials-today.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Office365IntegrationModuleBetaForSBS2011.aspx" /><issued>2011-11-1T21:45:40+01:00</issued><modified>2011-11-1T21:45:40+01:00</modified></entry><entry><title>HTML5 Video Web Part per SharePoint 2010</title><id>/Blog/HTML5VideoWebPartForSharePoint2010.aspx</id><created>2011-10-21T11:45:40+01:00</created><content type="text/html" mode="escaped">E' con enorme piacere che vi presento il mio ultimo progettino (pensavo di farvene vedere prima un altro, ma non ho resistito :) 
&lt;br /&gt;...una web part per SharePoint 2010 utile alla visualizzazione e la gestione di video secondo gli standard forniti dal draft corrente di HTML5 !! 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/html5VideoWebPart.jpg" alt="HTML5 Video Web Part per SharePoint 2010" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ancora è in una fase embrionale lo ammetto, ed ho potuto testatarlo solamente con Chrome 14 (per farla funzionare con IE9 c'è da modificare quanto meno la master page di SharePoint e vi terrò aggiornati a riguardo), ma i comandi presenti nella barra dei Ribbon funzionano alla perfezione ed è disponibile anche la visualizzazione del tempo trascorso all'interno della status bar, oltre al controllo del volume, la possibilità di visualizzare un video sia da internet che dalla vostra intranet (per esempio inserito all'interno di una document library), di scegliere le dimensioni del video o di eseguire più video all'interno della stessa pagina. 
&lt;br /&gt;
&lt;br /&gt;L'unica cosa di cui non sono tanto contento è che, per ora, sono stato obbligato ad utilizzare una farm solution e non una sanbox, a causa della registrazione del tab personalizzato all'interno della barra dei Ribbon. Nello specifico, la classe che non è disponibile nelle sandbox è la &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spribbon.aspx" title="SPRibbon class" target="_blank"&gt;SPRibbon&lt;/a&gt;, che invece mi serve per registrare il codice javascript custom per la gestione dei controlli all'interno della barra dei Ribbon e, in generale, del video stesso. Questo significa che, sempre per ora, non possiamo utilizzare questa web part all'interno di Office 365 (ma questa funzionalità penso di implementarla a breve). 
&lt;br /&gt;
&lt;br /&gt;In ogni modo, è vero che ancora magari è presto, ma le integrazioni in HTML5 su SharePoint stanno già venendo fuori (vedi &lt;a href="http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/" title="HTML5 Master Page per SharePoint 2010" target="_blank"&gt;questa fantastica master page&lt;/a&gt;) e così facendo possiamo essere tutti pronti per quello che sicuramente sarà il futuro. Se vi scaricate i sorgenti infatti, vedrete che ci sono un bel po’ di cose carine che si possono imparare (a meno che non le sappiate già ovviamente :) e che vi potranno essere molto utili anche nei vostri progetti SharePoint. 
&lt;br /&gt;
&lt;br /&gt;Quindi, questo è il link al progetto: &lt;a href="http://html5videowebpart.codeplex.com" title="HTML5 Video Web Part su Codeplex.com" target="_blank"&gt;http://html5videowebpart.codeplex.com&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;Se riuscite ad installarlo e a darmi qualche tipo di feedback, mi fate veramente contento. 
&lt;br /&gt;Invece.. Se volete darmi una mano e partecipare allo sviluppo, contattatemi pure via mail ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Peppe
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/HTML5.aspx" title="TAG: HTML5"&gt;HTML5&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/HTML5 Video Web Part.aspx" title="TAG: HTML5 Video Web Part"&gt;HTML5 Video Web Part&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HTML5VideoWebPartForSharePoint2010.aspx" /><issued>2011-10-21T11:45:40+01:00</issued><modified>2011-10-21T11:45:40+01:00</modified></entry><entry><title>SharePoint Online si aggiorna! A partire dal 20 ottobre</title><id>/Blog/SharePointOnlineUpdates.aspx</id><created>2011-10-13T21:0:6+01:00</created><content type="text/html" mode="escaped">&lt;a title="Microsoft Office 365" href="http://office365.microsoft.com" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Microsoft Office 365" src="http://www.peppedotnet.it/Images/office365.jpg"&gt;&lt;/a&gt;Ho appena ricevuto la mail d'avviso riguardo i prossimi aggiornamenti di SharePoint Online (Office 365).
&lt;br /&gt;Dal prossimo &lt;b&gt;20 ottobre&lt;/b&gt;, fino alla &lt;b&gt;fine di novembre&lt;/b&gt;, Microsoft di preoccuperà di aggiornare tutte le istanze di SharePoint Online per ognuno dei clienti facenti parte della piattaforma Office 365.
&lt;br /&gt;Come già &lt;a href="http://www.peppedotnet.it/Blog/SharePointConference2011Recap.aspx" title="SharePoint Conference 2011 Recap" target="_blank"&gt;vi dicevo&lt;/a&gt;, alcuni di questi aggiornamenti li conosciamo già. Altri sono nuovi ed è stata chiaramente una piacevole sorpresa vederli.
&lt;br /&gt;Eccoli nel dettaglio (riporto la mail di Microsoft così com'è):
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/AggiornamentiSharePointOnline.jpg" border="0" alt="Aggiornamenti a SharePoint Online (Office 365)" /&gt;
&lt;br /&gt;
&lt;br /&gt;Nonostante l'ampio arco di tempo prefessito per l'aggiornamento, si verrà comunque avvisati 48 ore prima dell'aggiornamento alla propria web application.
&lt;br /&gt;Speriamo che la mia venga migrata prima di &lt;a href="http://www.peppedotnet.it/Blog/WPC2011.aspx" target="_blank" title="WPC 2011"&gt;WPC&lt;/a&gt; :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointOnlineUpdates.aspx" /><issued>2011-10-13T21:0:6+01:00</issued><modified>2011-10-13T21:0:6+01:00</modified></entry><entry><title>Riassunto della SharePoint Conference 2011</title><id>/Blog/SharePointConference2011Recap.aspx</id><created>2011-10-10T19:14:26+01:00</created><content type="text/html" mode="escaped">Si è da poco conclusa la &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" title="SharePoint Conference 2011" target="_blank"&gt;SharePoint Conference 2011&lt;/a&gt; tenuta ad Anaheim (CA) e sono arrivati pian piano tutti i rumor per chi di noi non ha potuto partecipare (anche &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; ha pubblicato qualche informazione, grazie a &lt;a href="http://blogs.devleap.com/paolo/archive/2011/10/03/sharepoint-conference-2011-anaheim-ca.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; che era presente alla conferenza). Comunque, data la breve distanza dalla nascita di SharePoint 2010, ovviamente non c'erano tante novità riguardo il prodotto in se e non si è svelato tanto neanche riguardo il futuro. 
&lt;br /&gt;
&lt;br /&gt;Sembra infatti che la novità più grossa sia la location per la prossima SharePoint Conference: Las Vegas! :) 
&lt;br /&gt;
&lt;br /&gt;Scherzi a parte, una delle informazioni più importanti che sono state svelate è sicuramente il prossimo supporto ai Business Connectivity Services in Office 365, per quanto riguarda l'utilizzo di web service remoti (senza l'accesso diretto a SQL Server quindi). Una feature molto utile di cui SharePoint 2010 nella sua versione cloud risulta sprovvisto e che invece ci permetterà di integrare all'interno dei nostri siti SharePoint Online dei dati provenienti da archivi esterni, incrementando così le funzionalità come possiamo esporre in un'eventuale Extranet. 
&lt;br /&gt;
&lt;br /&gt;Inoltre, è stata dimostrata la duttilità e la potenza della nuova versione di SQL Server (codename "Denali") e della sua modalità "Always on", così da offrire una grandissima efficienza alle nostre farm SharePoint, in termini di disponibilità e di facilità in caso di disater recovery. 
&lt;br /&gt;
&lt;br /&gt;Poi, sono stati anunciati:&lt;ul&gt;&lt;li&gt;il rilascio di un tool veramente comodo per la costruzione di comandi powershell per SharePoint 2010, che potete trovare a questo indirizzo: 
&lt;br /&gt;&lt;a href="http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html" title="PowerShell Command Builder for SharePoint 2010" target="_blank"&gt;http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html&lt;/a&gt;
&lt;br /&gt; 
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;e il rilascio di un add-in per Visio in grado di aiutarvi nella costruzione di diagrammi a rappresentare le vostre farm SharePoint, che potete scaricare a questo indirizzo: 
&lt;br /&gt;&lt;a href="http://visio.microsoft.com/en-us/Templates_And_Downloads/Software_Add-ins/Pages/Visio-2010-Add-in-for-SharePoint-Network-Topology-Diagram.aspx" title="Visio add-in for SharePoint Network Topology" target="_blank"&gt;http://visio.microsoft.com/en-us/Templates_And_Downloads/Software_Add-ins/Pages/Visio-2010-Add-in-for-SharePoint-Network-Topology-Diagram.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Infine, ci sono anche novità per quanto riguarda il percorso di certificazioni, in quanto è stata aggiunta la "Microsoft Certified Architect" su SharePoint, ci cui potete trovare maggiori informazioni a questo indirizzo: &lt;a href="http://www.microsoft.com/learning/en/us/certification/architect-review.aspx" title="Microsoft Certified Architect su SharePoint" target="_blank"&gt;http://www.microsoft.com/learning/en/us/certification/architect-review.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Come vi dicevo, non è stata buttata tanta carne al fuoco.. vorrà dire che aspetteremo Las Vegas ;) 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointConference2011Recap.aspx" /><issued>2011-10-10T19:14:26+01:00</issued><modified>2011-10-10T19:14:26+01:00</modified></entry><entry><title>Come installare SharePoint su Sql Server che risponde ad una porta diversa dalla 1433</title><id>/Blog/InstallSharePointOnCustomSqlServerPort.aspx</id><created>2011-9-29T19:30:27+01:00</created><content type="text/html" mode="escaped">Quando installate SharePoint (2007 o 2010 che sia) vi può capitare di dovervi connettere ad un'istanza di SQL Server in cui è stata cambiata la porta d'ascolto di default (la famosissima 1433) e, siccome il configuration wizard di SharePoint non ci permette di specificare su quale porta TCP effettuare la connessione al database, questo può diventare un vero e proprio problema. A me è capitato tempo fa da un cliente in cui avevano deciso di modificare la 1433, con SharePoint già installato e a pieno regime, senza dirmi un bel niente (il tutto chiaramente per tenermi in allenamento ;)
&lt;br /&gt;
&lt;br /&gt;Non sto a riportarvi gli errori dati dal configuration wizard o presenti all'interno dell'Event Viewer della macchina SharePoint (che possono essere comunque riportati sotto un generico "cannot connect to database"), ma cerco di venire subito alla soluzione. Grazie ad un fantastico tool che si chiama cliconfg.exe (o se volete "SQL Server Client Network Utility") avete la possibilità di istruire il driver che si collega a SQL Server dalla vostra macchina SharePoint in modo tale da utilizzare la porta custom che il vostro dba ha scelto. Per farlo, dobbiamo scrivere all'interno di "Start &gt; Esegui" la stringa "cliconfg.exe", scegliere di abilitare il protocollo TCP all'interno della scheda "General" 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/cliconfg1.jpg" alt="Come installare SharePoint su Sql Server che risponde ad una porta diversa dalla 1433" /&gt;
&lt;br /&gt;
&lt;br /&gt;e configurarlo così da specificare la porta custom con cui connettersi alla vostra istanza di SQL Server. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/cliconfg2.jpg" alt="Come installare SharePoint su Sql Server che risponde ad una porta diversa dalla 1433" /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/cliconfg3.jpg" alt="Come installare SharePoint su Sql Server che risponde ad una porta diversa dalla 1433" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questa utility vi può tornare molto utile anche durante eventuali migrazioni dei server di back-end di SharePoint, in quanto oltre a permettervi di modificare la porta con cui connettersi a SQL Server vi da anche la possibilità di specificare un alias per la vostra istanza SQL ed utilizzare quel nome in tutte le connessioni a partire dalla macchina che state configurando. Questo per evitare di cambiare il nome del server di back-end all'interno delle configurazioni di SharePoint, anche se effettivamente il database sta girando su una nuova macchina. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Sql Server.aspx" title="TAG: Sql Server"&gt;Sql Server&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/InstallSharePointOnCustomSqlServerPort.aspx" /><issued>2011-9-29T19:30:27+01:00</issued><modified>2011-9-29T19:30:27+01:00</modified></entry><entry><title>Non riuscite ad aprire file tramite le Web App di SharePoint Online?</title><id>/Blog/CannotOpenWordDocsInBrowserOffice365.aspx</id><created>2011-9-21T13:3:36+01:00</created><content type="text/html" mode="escaped">Una volta acquistata una licenza di Office 365 (trial o a pagamento che sia), sono certo che una delle prime cose che vorrete testare con mano sono le Office Web Apps. Che cosa sono? Non sono nient'altro che delle applicazioni web che ci danno la possibilità di scrivere documenti Word, Excel, PowerPoint ecc.. direttamente dal browser o da altri dispositivi che sono quanto meno attaccati ad internet. Quindi, senza dover più avere installato in locale il pacchetto Office. Il tutto facente parte del pacchetto Office 365, di cui abbiamo già parlato. 
&lt;br /&gt;
&lt;br /&gt;Inoltre, sono altrettanto sicuro che la prima esperienza con le Office Web Apps sarà stato alquanto deludente per la maggior parte di voi. Io per primo (durante il periodo di beta del prodotto) sono entrato nel portale di Office 365 tutto bello contento, accedo alla site collection SharePoint Online che mi era stata creata in automatico in fase di registrazione, creo una document library, faccio click sul tasto "nuovo documento" e... PAM! Ecco quello che mi dice il browser: 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/webApps1.jpg" title="Non riuscite ad aprire file tramite le Web App di SharePoint Online?" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/webApps1_p.jpg" alt="Non riuscite ad aprire file tramite le Web App di SharePoint Online?" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Che delusione immensa.. :( 
&lt;br /&gt;
&lt;br /&gt;Vabbè dai, forse il mio browser (Internet Explorer 9 a 32bit) vorrà che io inserisca a mano il sito https://*.sharepoint.com all'interno dei siti trusted... 
&lt;br /&gt;
&lt;br /&gt;Neanche questo! In pratica anche inserendo il sito tra i siti trusted, l'unica cosa che ottenevo era aprire Word in locale senza la visualizzazione del warning che vi ho riportato. 
&lt;br /&gt;
&lt;br /&gt;Sempre più deluso (e ancora un po’ speranzoso di non esser stato fregato), provo a controllare i settings di SharePoint Online relativi alle Office Web Apps. Per prima cosa quindi, per controllare che effettivamente il servizio è stato installato con successo, controllate se è presente e soprattutto se è attiva la feature "Office Web Apps" a livello di site collection. 
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/webApps2.jpg" alt="Non riuscite ad aprire file tramite le Web App di SharePoint Online?" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/webApps2_p.jpg" alt="Non riuscite ad aprire file tramite le Web App di SharePoint Online?" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, come secondo (ed ultimo) controllo potete poi accertarvi che la feature "Apri documenti nelle applicazioni client per impostazione predefinita" (sempre a livello di site collection) NON sia abilitata. 
&lt;br /&gt;
&lt;br /&gt;Nel mio caso, entrambi i controlli sono andati a buon fine. Quindi inizio a pensare di provare a cambiar browser.. Chrome non era ancora supportato, Firefox al momento non ce l'avevo installato sulla mia macchina e quindi mi sono buttato per disperazione sulla versione di &lt;b&gt;Internet Explorer 9 a 64 bit&lt;/b&gt;. 
&lt;br /&gt;Con grande stupore, al posto del warning di cui sopra (che iniziavo un po’ ad odiare) ecco apparire il form web per la scelta del nuovo nome di documento! 
&lt;br /&gt;
&lt;br /&gt;Ora, &lt;a href="http://onlinehelp.microsoft.com/office365-enterprises/it-it/ff652534.aspx" title="Documentazione Office 365" target="_blank"&gt;nella documentazione&lt;/a&gt; non ne parlano di questo funzionamento (come vedete non riportano la versione di Internet Explorer 9 da utilizzare) ed io &lt;a href="http://www.peppedotnet.it/Blog/Office365BrowsersCompatibility.aspx" title="Office 365 browsers compatibility" target="_blank"&gt;nelle mie prove di un tempo&lt;/a&gt;, non avevo notato la cosa. 
&lt;br /&gt;
&lt;br /&gt;Spero possa esser utilie a qualcuno. 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office Web Apps.aspx" title="TAG: Office Web Apps"&gt;Office Web Apps&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CannotOpenWordDocsInBrowserOffice365.aspx" /><issued>2011-9-21T13:3:36+01:00</issued><modified>2011-9-21T13:3:36+01:00</modified></entry><entry><title>Come installare il Service Pack 1 di SharePoint 2010</title><id>/Blog/HowToInstallSharePoint2010ServicePack1.aspx</id><created>2011-8-9T15:15:57+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin-left: 10px; float: right;"&gt;&lt;a title="SharePointCommunity.it - La community italiana per i professionisti SharePoint" href="http://www.sharepointcommunity.it" target="_blank"&gt;&lt;img alt="SharePointCommunity.it - La community italiana per i professionisti SharePoint" src="http://www.peppedotnet.it/Images/spCommunity.jpg"&gt;&lt;/a&gt;&lt;/div&gt;Ciao a tutti!
&lt;br /&gt;Vi lascio qui una bella lettura per la vostra estate.. &lt;a href="http://www.sharepointinside.it" title="Francesco Sodano" target="_blank"&gt;Francesco Sodano&lt;/a&gt; ha scritto una serie di articoli ben dettagliati che vi spiegano le notivtà introdotte e tutti i passi per installare il &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010ServicePack1AvailableForDownload.aspx" title="Service Pack 1 di SharePoint 2010" target="_blank"&gt;Service Pack 1 di SharePoint 2010&lt;/a&gt;. Potete trovare questi articoli all'interno del sito di SharePointCommunity.
&lt;br /&gt;Ecco qua i link diretti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=32" title="Parte 1: Informazioni preliminari" target="_blank"&gt;Parte 1: Informazioni preliminari&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=33" title="Parte 2: Le perle nascoste nella SP1 e nel June 2011 CU" target="_blank"&gt;Parte 2: Le perle nascoste nella SP1 e nel June 2011 CU&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=34" title="Parte 3: Installazione della SP1 e del June 2011 Cumulative Update" target="_blank"&gt;Parte 3: Installazione della SP1 e del June 2011 Cumulative Update&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=35" title="Parte 4: Creazione DVD slipstream con SP1" target="_blank"&gt;Parte 4: Creazione DVD slipstream con SP1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Buona lettura ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Service Pack.aspx" title="TAG: Service Pack"&gt;Service Pack&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInstallSharePoint2010ServicePack1.aspx" /><issued>2011-8-9T15:15:57+01:00</issued><modified>2011-8-9T15:15:57+01:00</modified></entry><entry><title>Sviluppo di Web Part in SharePoint 2010</title><id>/Blog/WebPartInSharePoint2010HowToVideo.aspx</id><created>2011-7-18T21:24:8+01:00</created><content type="text/html" mode="escaped">Continua il nostro &lt;a href="http://www.peppedotnet.it/Blog/VideoAboutSharePoint2010Development.aspx" title="Percorso formativo per lo sviluppo su SharePoint 2010" target="_blank"&gt;percorso&lt;/a&gt; di sviluppo su SharePoint 2010. Dopo una breve panoramica, passiamo allo sviluppo di uno dei componenti da sempre più utilizzati all'interno di SharePoint: le web part!
&lt;br /&gt;In sostanza una web part non è altro che un pezzo di pagina. Vista così è un concetto di facile apprendimento per tutti, senza mettersi subito a parlare di cose "complicate"..
&lt;br /&gt;Nel video, vedremo che possiamo sviluppare sia delle web part partendo da un designer grafico (integrato all'interno di Visual Studio 2010) sia utilizzando direttamente il nostro linguaggio di programmazione preferito (nel mio caso C#).
&lt;br /&gt;Ecco il link diretto al video.
&lt;br /&gt;
&lt;br /&gt;&lt;a title="SharePoint 2010: sviluppo di web part" href="http://www.microsoft.com/italy/beit/Msdn.aspx?video=SharePoint-201035WebPart" target="_blank"&gt;&lt;img alt="SharePoint 2010: sviluppo di web part" src="http://www.peppedotnet.it/Images/BEIT_1.png"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare i video. Ecco quelli legati a questo video:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo3.zip" title="Sorgenti del video SharePoint 2010: sviluppo di web part" target="_blank"&gt;BEIT_Demo3.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E se volete invece riguardarvi gli altri, ecco qua la lista:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="SharePoint 2010: introduzione per gli sviluppatori" href="http://www.microsoft.com/italy/beit/Msdn.aspx?video=SharePoint-201035introduzione-per-gli-sviluppatori" target="_blank"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Il modello ad oggetti di SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/italy/beit/Msdn.aspx?video=SharePoint-201035WebPart" title="Sviluppo di Web Part" target="_blank"&gt;Sviluppo di Web Part&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Introduzione al modello ad oggetti client-side (Peppe)&lt;ul&gt;&lt;li&gt;Modello per applicazioni .NET&lt;/li&gt;&lt;li&gt;Modello per applicazioni Silverlight&lt;/li&gt;&lt;li&gt;Modello per personalizzazioni Javascript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;LINQ to SharePoint (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;Sandbox Solutions in SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Workflow con SharePoint 2010 e Visual Studio 2010 (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/BeIT.aspx" title="TAG: BeIT"&gt;BeIT&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WebPartInSharePoint2010HowToVideo.aspx" /><issued>2011-7-18T21:24:8+01:00</issued><modified>2011-7-18T21:24:8+01:00</modified></entry><entry><title>SharePoint 2010 and Windows Azure training course</title><id>/Blog/SharePoint2010AndWindowsAzureTrainingCourse.aspx</id><created>2011-7-12T16:41:48+01:00</created><content type="text/html" mode="escaped">Ciao a tutti.
&lt;br /&gt;In questo caldo infernale, vi segnalato che è disponibile da pochissime ore un training course per l'integrazione tra la piattaforma Windows Azure e SharePoint 2010.
&lt;br /&gt;Questo il link diretto:
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/spazuretrainingcourse" title="SharePoint 2010 and Windows Azure training course" target="_blank"&gt;http://msdn.microsoft.com/en-us/spazuretrainingcourse&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo inoltre che, se volete entrare un pò più nei dettagli delle possibili integrazioni tra i due prodotti Micorsoft, potete trovare su questo sito le mie slide e le demo utilizzate all'Azure Day 2011:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Blog/SlideAndDemosOfSharePoint2010AndAzureSession.aspx" title="Slide e demo utilizzate durante l'Azure Day 2011" target="_blank"&gt;http://www.peppedotnet.it/Blog/SlideAndDemosOfSharePoint2010AndAzureSession.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Windows Azure.aspx" title="TAG: Windows Azure"&gt;Windows Azure&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010AndWindowsAzureTrainingCourse.aspx" /><issued>2011-7-12T16:41:48+01:00</issued><modified>2011-7-12T16:41:48+01:00</modified></entry><entry><title>Le modifiche alle API di SharePoint 2010 dopo il Service Pack 1</title><id>/Blog/SharePoint2010ApiChangesAfterSP1.aspx</id><created>2011-7-11T10:19:49+01:00</created><content type="text/html" mode="escaped">Dopo l'annuncio della disponibilità di download del &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010ServicePack1AvailableForDownload.aspx" title="Service Pack 1 di SharePoint 2010" target="_blank"&gt;Service Pack 1 di SharePoint 2010&lt;/a&gt;, ecco disponibili i membri aggiunti e quelli modificati, presenti all'inteno degli assembly del modello ad oggetti server side.
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Microsoft.SharePoint.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.SPRecycleBinItemType&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New enum value:&lt;ul&gt;&lt;li&gt;&lt;em&gt;Web&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.SPWeb&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void Recycle()&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Strings&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New constants:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public const string CannotRecycleRootWeb&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string HealthRule_Explanation_BcsShimsAreEnabled&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string HealthRule_Remedy_BcsShimsAreEnabled&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string RecycleBinWebMissingContainerError&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string SPStorageMetricsProcessingJobDescription &lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string SPUsageUserCodeRequestsDescription &lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string SPUsageUserCodeRequestsMonitoredDataDescription&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string SiteAlreadyExists&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string StorageMetricsDBObjectsNotFound&lt;/em&gt; &lt;/li&gt;
&lt;br /&gt;&lt;li&gt;&lt;em&gt;public const string StorageMetricsFreshnessWarning&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string StorageMetricsNotAvailable&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public const string TimerJobTitleStorageMetricsProcessing&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPAce&lt;T&gt;&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New properties:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public Byte[] BinaryId() { get; }&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public Microsoft.SharePoint.Administration.SPIdentifierType BinaryIdType() { get; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPAcl&lt;T&gt;&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;public SPAce&lt;T&gt; Add(string principalName, string displayName, SPIdentifierType identifierType, byte[] identifier, T grantRightsMask, T denyRightsMask)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPContentDatabase&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public Microsoft.SharePoint.Administration.SPDeletedSite GetDeletedSite(System.Guid id)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public void Move(SPContentDatabase destinationDb, List&lt;SPSite&gt; sitesToMove, Dictionary&lt;string, string&gt; rbsProviderMap, out Dictionary&lt;SPSite, string&gt; failedSites)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPContentDatabaseCollection&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public SPContentDatabase Add(string strDatabaseServer, string strDatabaseName, string strDatabaseUsername, string strDatabasePassword, int warningSiteCount, int maximumSiteCount, int status, bool flushChangeLog, bool changeSyncKnowledge)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPDatabase&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void ChangeDatabaseInstance(string databaseServiceInstance)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPIncomingEmailService&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public int RetryDeliveryInterval { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPPolicy&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected Void OnDeserialization()&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPSiteLookupProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;Changed method (breaking change!)&lt;ul&gt;&lt;li&gt;&lt;em&gt;public Void RenameHostHeaderSite(Guid siteId, string newHostHeader)&lt;/em&gt; =&gt; &lt;em&gt;public Void RenameHostHeaderSite(Guid siteId, Uri newHostHeaderSiteUri)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPUsageApplication&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public int UsageInsertionTimeOut { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPUserCodeExecutionTier&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public int PriorityPerProcess { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPWebApplication&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New properties:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public int StorageMetricsProcessingDuration { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public uint MaxDiscussionBoardItemsForSiteDataFolderQuery { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public uint? UserDefinedWorkflowMaximumComplexity { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public SPDeletedSiteCollection GetDeletedSites()&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public SPDeletedSiteCollection GetDeletedSites(SPDeletedSiteQuery query)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public SPDeletedSiteCollection GetDeletedSites(Guid siteId)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public SPDeletedSiteCollection GetDeletedSites(string sitePath)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public void MigrateUsers(IMigrateUserCallback callback)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.SPWebService&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New properties:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public int ImagingDownloadSizeLimit { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public bool EnableHostHeaderSiteBasedSchemeSelection { get; set; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPActiveDirectoryClaimProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPAllUserClaimProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPClaimHierarchyProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public string GetLocalizedDisplayName()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPClaimProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public virtual bool SupportsUserKey { get; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public string GetLocalizedDisplayName()&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public SPClaim UserKeyForEntity(SPClaim entity)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public virtual string GetClaimTypeForUserKey()&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;protected virtual SPClaim GetUserKeyForEntity(SPClaim entity)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPClaimProviderDefinition&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public bool IsVisible { get; set; }&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPClaimProviderOperationOptions&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New enum value:&lt;ul&gt;&lt;li&gt;&lt;em&gt;OverrideVisibleFlag&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPFormsClaimProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Administration.Claims.SPSystemClaimProvider&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected override void FillDefaultLocalizedDisplayName(CultureInfo culture, out string localizedName&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.BusinessData.Administration.LobSystem&lt;/em&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;New static method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public static LobSystem MergeXml(string xml, out string[] errors, PackageContents packageContents, AdministrationMetadataCatalog metadataCatalog, string settingId)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.BusinessData.Administration.TypeDescriptor&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New static method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public static TypeDescriptor MergeXml(string xml, out string[] errors, PackageContents packageContents, Parameter parameter, TypeDescriptor parent, string settingId)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.BusinessData.SharedService.BdcServiceApplicationProxy&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public bool IsSystemTypeEnabled(SystemType systemType)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public void EnableSystemType(SystemType systemType, bool value)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.JSGrid.GridSerializer&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void ApplyPostViewIncrementalInsertsAndDeletes(IEnumerable changes, Func&lt;/em&gt;&gt; fnGetDefaultValuesForPostViewInserts) &lt;/OBJECT,&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.JSGrid.HierarchyNode&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public HierarchyNode Parent { get; set; }&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Utilities.SPUtility&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New static method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public static Stream ExecuteCellStorageBinaryRequest(SPFile spfile, Stream request, bool coalesce, ref Guid partitionID, string userName, bool coauthVersioning, string etagMatching, bool fExpectNoFileExists, string contentChangeUnit, string clientFileID, string bypassSchemaID, long nLockType, string lockID, long nTimeout, bool createParentFolder, out string etagReturn, out bool allRequestSucceeded, out int coalesceHRESULT, out string coalesceErrorMessage, out bool containHotboxData, out bool haveOnlyDemotionChanges, ref int binaryReqCountQuota)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.WebPartPages.ListFormWebPart&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public bool ShouldSerializeTemplateName()&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em  style="text-decoration: underline"&gt;New classes:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPDeletedSite&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPDeletedSiteCollection&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPDeletedSiteLookupInfo&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPDeletedSiteQuery&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPUsageUserCodeRequests&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPUsageUserCodeRequestsEntry&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPUsageUserCodeRequestsMonitoredData&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPUsageUserCodeRequestsMonitoredDataEntry&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.Health.SPHealthAnalysisRuleInstance&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.WebControls.IEVersionMetaTag&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em  style="text-decoration: underline"&gt;New enum types:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.SPIdentifierType&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em  style="text-decoration: underline"&gt;New interfaces:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.IMigrateUserCallback&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.Administration.ISPSiteLookupProviderRecycleBin&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.SharePoint.Publishing.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Publishing.Internal.CodeBehind&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected bool IsCurrentUserSiteAdmin { get; }&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Publishing.WebControls.SpellCheckV4Action&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected bool ShouldRenderWithoutTabs()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions.ConsoleAction&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;protected bool ShouldRenderWithoutTabs()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.SharePoint.Taxonomy.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.SharePoint.Taxonomy.TermStore&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public Group GetSiteCollectionGroup(SPSite currentSite)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.SharePoint.Portal.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.UserProfiles.UserProfileService&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void AddLeader(string accountName)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public Leader[] GetLeaders()&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public void RemoveLeader(string accountName)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.Office.Server.UserProfiles.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.SocialData.PluggableSocialSecurityTrimmerManager&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public static string[] GetUrlFoldersRequiringTrim(SPServiceContext serviceContext)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;public static string[] GetUrlFoldersToAlwaysAllow(SPServiceContext serviceContext)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;public static void SetTrimmerSettings(SPServiceContext serviceContext, bool enableTrimming)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;public static void SetTrimmerSettings(SPServiceContext serviceContext, string[] urlFoldersRequiringTrim, string[] urlFoldersToAlwaysAllow)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.UserProfiles.BusinessDataCatalogConnection&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void Delete()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.UserProfiles.ConnectionManager&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public DirectoryServiceConnection AddActiveDirectoryConnection(ConnectionType type, string displayName, string server, bool useSSL, string accountDomain, string accountUsername, SecureString accountPassword, List&lt;DirectoryServiceNamingContext&gt; namingContexts, string spsClaimProviderTypeValue, string spsClaimProviderIdValue, string adClaimIDMapAttribute)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.UserProfiles.UserProfileManager&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New methods:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public void AddLeader(string accountName)&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public Leader[] GetLeaders()&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;em&gt;public void RemoveLeader(string accountName)&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em  style="text-decoration: underline"&gt;New classes:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Microsoft.Office.Server.UserProfiles.Leader&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.Office.Server.Search.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.Search.Administration.CrawlTopologyState&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New enum values:&lt;ul&gt;&lt;li&gt;&lt;em&gt;ActiveToBeRemoved&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;DeactivatingToBeRemoved&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.Search.Administration.SearchServiceApplication&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public uint CrawlLogCleanupIntervalInDays { get; set; }&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.Search.Administration.SearchServiceApplicationProxy&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public LocationConfigurationCollection LocationConfigurations { get; }&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.Search.Query.QueryInfo&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New property:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public string CorrelationId { get; set; }&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;em style="text-decoration: underline"&gt;Microsoft.Office.Server.Search.Query.QueryManager&lt;/em&gt;&lt;ul&gt;&lt;li&gt;New method:&lt;ul&gt;&lt;li&gt;&lt;em&gt;public System.Xml.XmlDocument GetResults()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microsoft.SharePoint.PowerShell.dll&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;em  style="text-decoration: underline"&gt;New classes:&lt;/em&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.PowerShell.SPDeletedSitePipeBind&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Microsoft.SharePoint.PowerShell.SPHealthAnalysisRuleInstancePipeBind&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Buona ispezione! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Service Pack.aspx" title="TAG: Service Pack"&gt;Service Pack&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object Model.aspx" title="TAG: Object Model"&gt;Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ApiChangesAfterSP1.aspx" /><issued>2011-7-11T10:19:49+01:00</issued><modified>2011-7-11T10:19:49+01:00</modified></entry><entry><title>Microsoft SharePoint MVP per il secondo anno di fila</title><id>/Blog/MicrosoftSharePointMVPSecondYearInArow.aspx</id><created>2011-7-1T17:10:26+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 10px; float: right;" alt="Microsoft SharePoint MVP" src="http://www.peppedotnet.it/Images/mvp2.jpg"&gt;Ho appena ricevuto la conferma.. &lt;b&gt;sono stato nominato Microsoft SharePoint MVP per il secondo anno di fila&lt;/b&gt;!! E dire che sono contento è poco!! :)
&lt;br /&gt;
&lt;br /&gt;E' stata una giornata veramente elettrizzante anche questa di quest'anno, non credevo. Aspettare LA MAIL è davvero qualcosa di unico.
&lt;br /&gt;Dall'&lt;a href="http://www.peppedotnet.it/Blog/MicrosoftSharePointMVP.aspx" title="Microsoft SharePoint MVP" target="_blank"&gt;anno scorso&lt;/a&gt; ne son successe di cose.. e devo dire che il mio e di chi è con me, è stato proprio un bell'anno.
&lt;br /&gt;Ho fatto una miriade di nuove esperienze tutte veramente utili, ho partecipato a tantissime iniziative di Microsoft e di varie community, sono stato in un sacco di posti (Napoli, Milano, Roma, Bologna, Padova) dove ho conosciuto tantissime nuove persone, molte delle quali veramente splendide. 
&lt;br /&gt;E penso che questa sia stata la cosa più bella del programma. La passione per quel che facciamo e che ci raggruppa tutti, da ogni parte d'Italia o del mondo, è proprio bella.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/MVP.aspx" title="TAG: MVP"&gt;MVP&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&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/MicrosoftSharePointMVPSecondYearInArow.aspx" /><issued>2011-7-1T17:10:26+01:00</issued><modified>2011-7-1T17:10:26+01:00</modified></entry><entry><title>Service Pack 1 per SharePoint 2010 disponibile per il download</title><id>/Blog/SharePoint2010ServicePack1AvailableForDownload.aspx</id><created>2011-6-29T9:29:26+01:00</created><content type="text/html" mode="escaped">Da ieri (28/06/2011), assieme al lancio di Office 365 è stato reso disponibile per il download pubblico il Service Pack 1 per SharePoint 2010 (assieme a quello per la suite Office 2010,). Potete scaircarlo seguendo questo indirizzo:
&lt;br /&gt;&lt;a href="http://technet.microsoft.com/it-it/office/ee748587.aspx" title="Download SharePoint 2010 Service Pack 1" target="_blank"&gt;http://technet.microsoft.com/it-it/office/ee748587.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Blog/AnnouncedSharePoint2010SP1.aspx" title="Anunciato il Service Pack 1 di SharePoint 2010" target="_blank"&gt;Come dicevamo&lt;/a&gt;, questo primo Service Pack della famiglia dei prodotti Office 2010 (per quanto riguarda SharePoint chiaramente), oltre a correggere un bel pò di cose qua e la, vede anche la presenza di alcune aggiunte:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il pieno supporto per Internet Explorer 9 e per Google Chrome sia di SharePoint 2010 che delle Office Web Applications&lt;/li&gt;&lt;li&gt;La possibilità di recuperare siti cancellati dal cestino (ad oggi era possibile solo per liste, document libray e singoli elementi)&lt;/li&gt;&lt;li&gt;La possibilità di ricercare all'interno dei file PPSX&lt;/li&gt;&lt;li&gt;Un nuovo comando Powershell per spostare una site collection da un database di contenuti all'altro (comando "Move-SPSite")&lt;/li&gt;&lt;li&gt;Funzionalità aggiuntive e avanzate per quanto riguarda la parte di backcup e restore&lt;/li&gt;&lt;li&gt;Ripristino della pagina StoreMan.asxp (per gestione dello storage)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Ci sono alcune cose cui dovete stare attenti però..
&lt;br /&gt;
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Per prima cosa, al posto di partire direttamente con l'installazione del service pack, dovete leggere per bene questa KB Microsoft così da conoscere tutti i problemi noti che potete avere durante tutto il processo:
&lt;br /&gt;- &lt;a href="http://support.microsoft.com/kb/2532126" title="Problemi noti durante l'installazione di Office 2010 SP1 e SharePoint 2010 SP1" target="_blank"&gt;http://support.microsoft.com/kb/2532126&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Poi, subito dopo aver installato il Service Pack 1, dovete correre ad installare il pacchetto cumulativo di update di giugno. Lo trovate a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2536599" title="June 2011 Cumulative Update" target="_blank"&gt;http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=2536599&lt;/a&gt;
&lt;br /&gt;Questo perchè sono stati rilasciati degli aggiornamenti e degli hotfix molto importanti che però non sono stati inseriti all'interno del Service Pack 1.&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Per l'ordine di installazione ed ulteriori informazioni, vi rimando direttamente al blog del team di SharePoint 2010:
&lt;br /&gt;&lt;a href="http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=984" title="SharePoint 2010 Team Blog" target="_blank"&gt;http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=984&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Mi raccomando, seguite bene tutte le KB prima di partire con l'installazione.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Service Pack.aspx" title="TAG: Service Pack"&gt;Service Pack&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ServicePack1AvailableForDownload.aspx" /><issued>2011-6-29T9:29:26+01:00</issued><modified>2011-6-29T9:29:26+01:00</modified></entry><entry><title>Cosa possiamo sviluppare in SharePoint Online (Office 365)</title><id>/Blog/DevelopingForSharePointOnlineOffice365.aspx</id><created>2011-6-23T14:3:27+01:00</created><content type="text/html" mode="escaped">&lt;a title="Microsoft Office 365" href="http://office365.microsoft.com" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Microsoft Office 365" src="http://www.peppedotnet.it/Images/office365.jpg"&gt;&lt;/a&gt;Non abbiamo ancora mai parlato di come sviluppare per SharePoint Online, la piattaforma di collaborazione Microsoft offerta all'interno del pacchetto Office 365. Abbiamo visto &lt;a href="http://www.peppedotnet.it/Blog/InstallSilverlightAppsInOffice365SharePointOnline.aspx" title="Come installare un'applicazione Silverlight all'interno di SharePoint Online" target="_blank"&gt;come possiamo installare un'applicazione Silverlight&lt;/a&gt;, attraverso una SandBox solution, ma niente di più, quindi direi che è proprio il caso di iniziare perchè il 29 giugno SharePoint Online verrà ufficialmente lanciato al pubblico ed è meglio esser preparati.
&lt;br /&gt;In SharePoint Online la cosa più importante che dobbiamo sapere è che ogni personalizzazione la dobbiamo scrivere e installare utilizzando le soluzioni di tipo SandBox. Quindi, togliamoci subito dalla testa tutte le cose che possiamo fare tramite le Farm Solutions (visual web part, application page, ecc..).
&lt;br /&gt;Altra cosa importante è che non possiamo fare debug all'interno di SharePoint Online, quindi dobbiamo prima sviluppare le nostre personalizzazioni in locale e poi possiamo procedere con l'installazione sul cloud.
&lt;br /&gt;Per il resto, le funzionalità che abbiamo a disposizione noi sviluppatori sono esattamente le stesse con cui siamo stati abituati fin'ora utilizzando le installazioni di SharePoint 2010 in locale.
&lt;br /&gt;Riguardo ai limiti detti, ecco quindi che all'interno di Visual Studio 2010 ci è data la possibilità di utilizzare solamente le seguenti tipologie di progetti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Empty projects (in cui però possiamo inserire solamente alcuni tipi di elementi)&lt;/li&gt;&lt;li&gt;List Definition projects&lt;/li&gt;&lt;li&gt;Event Receiver projects&lt;/li&gt;&lt;li&gt;Content Type projects&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;
&lt;br /&gt;Di conseguenza, non possiamo creare nuovi progetti attraverso i template:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Site Definition projects &lt;/li&gt;&lt;li&gt;Business Data Connectivity service model projects&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Chiaramente poi, all'interno dei template di progetto "supportati" abbiamo un insieme ridotto di template di element che possiamo utilizzare all’interno della nostra soluzione Sandox. Questo insieme esclude tutti gli artefatti che necessitano un'installazione all'interno della SharePoint root o all'interno della Central Administration di SharePoint.
&lt;br /&gt;Ecco quindi che, all'interno di una soluzione Sandbox per SharePoint Online possiamo utilizzare solamente questi template di elemento:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web Parts&lt;/li&gt;&lt;li&gt;List definitions&lt;/li&gt;&lt;li&gt;Event receivers&lt;/li&gt;&lt;li&gt;Content types&lt;/li&gt;&lt;li&gt;Visual Web Parts (solamente la versione Sandbox che potete usare scaricando i Visual Studio 2010 SharePoint Power Tools)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Mentre invece restano esclusi i progetti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visual Web Parts (standard)&lt;/li&gt;&lt;li&gt;Application pages&lt;/li&gt;&lt;li&gt;BDC models&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Proprio perchè tutte e tre le tipologie di template di elemento, necessitano dell'installazione di alcuni dei loro file all'interno della SharePoint root (percorso "14" per intenderci) o dell'esecuzione di alcune operazioni tramite la Central Administration a cui, in SharePoint Online, non possiamo accedere in quanto tutti i tool e in generale i concetti legati alla Farm di SharePoint non sono più affar nostro.
&lt;br /&gt;Infine, dovete tenere bene a mente che sviluppando delle Sandbox solution non avete a disposizione tutto un'insieme di classi del modello ad oggetti di SharePoint 2010 che in installazioni on-premises siete sempre stati abituati ad utilizzare. Questo insieme è composto da tutte le classi che rappresentano oggetti che stanno al di fuori del concetto di site collection corrente.
&lt;br /&gt;Per esempio, non è possibile istanziare un nuovo oggetto di tipo SPSite, specificando l'url di una site collection diversa da quella corrente come parametro principale. Oppure, non è possibile utilizzare alcuni metodi della classe HttpWebRequest (in quanto effettuano delle operazioni  http nel contesto esterno alla site collection corrente di SharePoint) o effettuare delle query a database SQL Server o di altro tipo.
&lt;br /&gt;Se, in fase di sviluppo, volete un piccolo aiuto per quanto riguarda le classi e i metodi che potete o non potete utilizzare all'interno della vostra soluzione Sandbox per SharePoint Online, vi consiglio di installare i Visual Studio 2010 SharePoint Power Tools che potete scaricare seguendo questo indirizzo:
&lt;br /&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9" title="Visual Studio 2010 SharePoint Power Tools" taget="_blank"&gt;http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Il pacchetto contiene due feature molto utili per sviluppare per SharePoint Online:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La già citata Sandboxed-compatible Visual Web Part – che vi permette di scrivere web part utilizzando un designer grafico.&lt;/li&gt;&lt;li&gt;La compilazione per soluzioni Sandbox (Sandbox compilation) – che vi aiuta, in fase di compilazione, a capire quali sono le classi e i metodi che potete utilizzare all'interno di una soluzione sandbox.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Detto questo, vi ricordo che potete ancora effettuare le vostre prove accedendo alla versione Beta di Office 365 iscrivendovi al programma attraverso il sito &lt;a href="http://www.office365.com" title="Officer65.com" target="_blank"&gt;www.office365.com&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DevelopingForSharePointOnlineOffice365.aspx" /><issued>2011-6-23T14:3:27+01:00</issued><modified>2011-6-23T14:3:27+01:00</modified></entry><entry><title>Gestire gli event receiver di SharePoint 2010 tramite PowerShell</title><id>/Blog/SharePoint2010EventReceiverThroughPowershell.aspx</id><created>2011-6-20T9:7:11+01:00</created><content type="text/html" mode="escaped">Il concetto degli event receiver dovrebbe essere ormai famigliare a tutti gli sviluppatori SharePoint, dato che ne potevamo sfruttare le potenzialità già da SharePoint Portal Server 2003/WSS 2.
&lt;br /&gt;In linea di massima, scrivere un event receiver non è mai stato difficile. C'è sempre stata una classe da cui ereditare, e uno o più metodi da sovrascrivere e di cui pensare l'implementazione.
&lt;br /&gt;La rottura di scatole (permettetemi il termine) è sempre stata invece l'associazione del nostro event receiver custom a liste o document library.
&lt;br /&gt;
&lt;br /&gt;Se non mi credete, torniamo un pò indietro nella storia..
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Windows SharePoint Services 2.0 / SharePoint Portal Server 2003&lt;/span&gt;
&lt;br /&gt;Per legare del codice custom a qualche evento di una document library (e SOLO di una document library, perchè sulle liste non erano ancora stati implementati), si doveva modificare dei settings all'interno delle pagine di amministrazione di SharePoint e in quelle di configurazione della document library, sperando di non sbagliare il nome completo dell'assembly che conteneva il nostro receiver e il nome completo del tipo.
&lt;br /&gt;Ecco qua la documentazione che lo dimostra: &lt;a href="http://technet.microsoft.com/en-us/library/cc288968(office.12).aspx" title="Binding to a Document Library Event Handler (Windows SharePoint Services 2.0)" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc288968(office.12).aspx&lt;/a&gt;
&lt;br /&gt;Lo so.. erano bei tempi :)
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Windows SharePoint Service 3.0 / MOSS 2007&lt;/span&gt;
&lt;br /&gt;Ora possiamo avere receiver anche su liste, abbiamo molte operazioni in più da poter gestire e due diverse tipologie di associazione del receiver alla relativa lista o document library:
&lt;br /&gt;- associazione tramite una feature
&lt;br /&gt;- associazione tramite il modello ad oggetti di SharePoint
&lt;br /&gt;Al tempo, erano stati dei grandissimi passi avanti!
&lt;br /&gt;La rottura di scatole però era che non avevamo template per farci generare il codice di associazione e, per legare velocemente un receiver custom ad una lista, finivamo puntualmente per scrivere l'ennesima console application da dover lanciare a mano sulla macchina SharePoint. Questo fino a che non sono stati rilasciati su codeplex alcuni tool fantastici come &lt;a href="http://speventhandlermanage.codeplex.com/" title="SharePoint Event Handler Manager" target="_blanK"&gt;SharePoint Event Handler Manger&lt;/a&gt;, &lt;a href="http://thesharedcontext.codeplex.com/" title="SharePoint Event Handler Management Extensions for STSADM" target="_blank"&gt;SharePoint Event Handler Management Extensions for STSADM&lt;/a&gt; e &lt;a href="http://speventsmanager.codeplex.com/" title="SharePont Events Manager" target="_blank"&gt;SharePoint Events Manager&lt;/a&gt;.
&lt;br /&gt;Per chi ha ancora a che fare con SharePoint 2007, potete fare riferiemento a questo mio articolo:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/Articoli/Wss3EventHandlers.aspx" title="WSS 3.0 event handlers" target="_blank"&gt;http://www.peppedotnet.it/Articoli/Wss3EventHandlers.aspx&lt;/a&gt;
&lt;br /&gt;e a queste pagine della documentazione Microsoft:
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163318.aspx" title="Events in SharePoint 2007" target="_blank"&gt;http://msdn.microsoft.com/en-us/magazine/cc163318.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms463479.aspx" title="What's New with Event Handlers" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ms463479.aspx&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ms475328(v=office.12).aspx" title="Registering an Event Handler" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ms475328(v=office.12).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;SharePoint 2010&lt;/span&gt;
&lt;br /&gt;Eccoci al presente.. oggi possiamo legare del codice custom a siti, site collection, liste, elementi, documenti, content type, feature e workflow. Spero proprio che possa bastarvi :)
&lt;br /&gt;I metodi di associazione che avevamo disponibili in SharePoint 2007 sono tutti mantenuti.
&lt;br /&gt;Abbiamo un template specifico per la creazione di un event receiver da Visual Studio 2010.
&lt;br /&gt;E, grazie all'integrazione con PowerShell, possiamo registrare al volo event receiver su oggetti all'interno di SharePoint senza dover scrivere feature o console application. Il che, almeno dal mio punto di vista, è fantastico perchè ho a disposizione una vera e propria console di scripting che nel mio caso uso per aggiungere, togliere, modificare le associazioni dei miei event receiver, ma che posso utilizzare per fare qualsiasi cosa io desidiri sui miei siti SharePoint, senza dover compilare nessun progetto o scrivere codice XML di provisioning.
&lt;br /&gt;
&lt;br /&gt;Ecco qundi che volendo aggiungere un nuovo event receiver su una lista SharePoint, mi basta aprire PowerShell dal menu dei programmi sotto la voce "Microsoft SharePoint 2010 Products" e scrivere questo script:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$web = Get-SPWeb -Identity http:&lt;span style="color: #008200"&gt;//servername &lt;/span&gt;
$list = $web.Lists[&lt;span style="color: #A31515"&gt;"Your list name"&lt;/span&gt;] 
&lt;br /&gt;$&lt;span style="color: #0000FF"&gt;event&lt;/span&gt; = $list.EventReceivers.Add() 
&lt;br /&gt;$&lt;span style="color: #0000FF"&gt;event&lt;/span&gt;.Assembly = &lt;span style="color: #A31515"&gt;"Your full assembly name, Version=1.0.0.0, Culture=neutral, PublicKeyToken=..."&lt;/span&gt;
&lt;br /&gt;$&lt;span style="color: #0000FF"&gt;event&lt;/span&gt;.Class = &lt;span style="color: #A31515"&gt;"Your class name"&lt;/span&gt;
&lt;br /&gt;$&lt;span style="color: #0000FF"&gt;event&lt;/span&gt;.Name = &lt;span style="color: #A31515"&gt;"Test event from PowerShell"&lt;/span&gt;
&lt;br /&gt;$spEventReceiver.Type = 10002 
&lt;br /&gt;$spEventReceiver.SequenceNumber = 1000 
&lt;br /&gt;$spEventReceiver.Synchronization = 1 
&lt;br /&gt;$spEventReceiver.Update()&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Le propietà che vengono settate in questo script PowerShell non sono altro che le proprietà delle classi SPList e SPEventReceiver con cui siete stati abituati a lavorare fin'ora.
&lt;br /&gt;Le uniche due cose su cui bisogna porre attenzione sono le proprietà Type e Synchronization, in quanto essendo delle enum devono essere valorizzate con gli interi che corrispondono al valore di enumarazione che vogliamo utilizzare.
&lt;br /&gt;Per la proprietà Synchronization, abbiamo a disposizione i seguenti valori:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1: Synchronous&lt;/li&gt;&lt;li&gt;2: Asynchronous&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Per la proprietà type invece, la lista è un pò più lunga:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-1: InvalidReceiver&lt;/li&gt;&lt;li&gt;1: ItemAdding&lt;/li&gt;&lt;li&gt;2: ItemUpdating&lt;/li&gt;&lt;li&gt;3: ItemDeleting&lt;/li&gt;&lt;li&gt;4: ItemCheckingIn&lt;/li&gt;&lt;li&gt;5: ItemCheckingOut&lt;/li&gt;&lt;li&gt;6: ItemUncheckingOut&lt;/li&gt;&lt;li&gt;7: ItemAttachmentAdding&lt;/li&gt;&lt;li&gt;8: ItemAttachmentDeleting&lt;/li&gt;&lt;li&gt;9: ItemFileMoving&lt;/li&gt;&lt;li&gt;101: FieldAdding&lt;/li&gt;&lt;li&gt;102: FieldUpdating&lt;/lI&gt;&lt;li&gt;103: FieldDeleting&lt;/li&gt;&lt;li&gt;104: ListAdding&lt;/li&gt;&lt;li&gt;105: ListDeleting&lt;/li&gt;&lt;li&gt;201: SiteDeleting&lt;/li&gt;&lt;li&gt;202: WebDeleting&lt;/li&gt;&lt;li&gt;203: WebMoving&lt;/li&gt;&lt;li&gt;204: WebAdding&lt;/li&gt;&lt;li&gt;501: WorkflowStarting&lt;/li&gt;&lt;li&gt;10001: ItemAdded&lt;/li&gt;&lt;li&gt;10002: ItemUpdated&lt;/li&gt;&lt;li&gt;10003: ItemDeleted&lt;/li&gt;&lt;li&gt;10004: ItemCheckedIn&lt;/li&gt;&lt;li&gt;10005: ItemCheckedOut&lt;/li&gt;&lt;li&gt;10006: ItemUncheckedOut&lt;/li&gt;&lt;li&gt;10007: ItemAttachmentAdded&lt;/li&gt;&lt;li&gt;10008: ItemAttachmentDeleted&lt;/li&gt;&lt;li&gt;10009: ItemFileMoved&lt;/li&gt;&lt;li&gt;10010: ItemFileConverted&lt;/li&gt;&lt;li&gt;10101: FieldAdded&lt;/li&gt;&lt;li&gt;10102: FieldUpdated&lt;/li&gt;&lt;li&gt;10103: FieldDeleted&lt;/li&gt;&lt;li&gt;10104: ListAdded&lt;/li&gt;&lt;li&gt;10105: ListDeleted&lt;/li&gt;&lt;li&gt;10201: SiteDeleted&lt;/li&gt;&lt;li&gt;10202: WebDeleted&lt;/li&gt;&lt;li&gt;10203: WebMoved&lt;/li&gt;&lt;li&gt;10204: WebProvisioned&lt;/li&gt;&lt;li&gt;10501: WorkflowStarted&lt;/li&gt;&lt;li&gt;10502: WorkflowPostponed&lt;/li&gt;&lt;li&gt;10503: WorkflowCompleted&lt;/li&gt;&lt;li&gt;20000: EmailReceived&lt;/li&gt;&lt;li&gt;32766: ContextEvent&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Bene. Ora che abbiamo inserito un nuovo event receiver, vediamo quali altri script PowerShell possiamo utilizzare per facilitarci il lavoro.
&lt;br /&gt;
&lt;br /&gt;Vogliamo vedere la lista di receiver che sono collegati ad una lista/document library? Ecco qua:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$web = Get-SPWeb -Identity http:&lt;span style="color: #008200"&gt;//servername &lt;/span&gt;
$list = $web.Lists[&lt;span style="color: #A31515"&gt;"Your list name"&lt;/span&gt;] 
&lt;br /&gt;$list.EventReceivers | Select Name,Assembly,Type&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Vogliamo cancellare o modificare l’associazione di un event receiver? Ecco qua:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;$web = Get-SPWeb -Identity http:&lt;span style="color: #008200"&gt;//servername &lt;/span&gt;
$list = $web.Lists[&lt;span style="color: #A31515"&gt;"My List Name"&lt;/span&gt;] 
&lt;br /&gt;$eventsCount = $spList.EventReceivers.Count 
&lt;br /&gt;$&lt;span style="color: #0000FF"&gt;class&lt;/span&gt; = &lt;span style="color: #A31515"&gt;"Your class name"&lt;/span&gt;
&lt;br /&gt;$type = 10002
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;for&lt;/span&gt; ($i = 0; $i -lt $eventsCount; $i+=1) 
&lt;br /&gt;{ 
&lt;br /&gt;   &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; ($list.EventReceivers[$i].Class -eq $&lt;span style="color: #0000FF"&gt;class&lt;/span&gt; -and $list.EventReceivers[$i].Type -eq $type) 
&lt;br /&gt;   { 
&lt;br /&gt;      $list.EventReceivers[$i].Delete() 
&lt;br /&gt;   } 
&lt;br /&gt;} 
&lt;br /&gt;$list.Update()&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Bello, no? :)
&lt;br /&gt;
&lt;br /&gt;Purtroppo (e qui ho l'unica nota dolente del post) attualmente PowerShell non è funzionante se utilizzato per modificare contenuti SharePoint Online all'interno del pacchetto Office 365.
&lt;br /&gt;Resta di fatto che, per lo sviluppo e per la gestione delle nostre installazioni on premises, è uno strumento fondamentale che ogni sviluppatore SharePoint dovrebbe sapere utilizzare senza problemi.
&lt;br /&gt;Chissà poi, cosa ci riserverà il futuro :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/PowerShell.aspx" title="TAG: PowerShell"&gt;PowerShell&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010EventReceiverThroughPowershell.aspx" /><issued>2011-6-20T9:7:11+01:00</issued><modified>2011-6-20T9:7:11+01:00</modified></entry><entry><title>Percorso formativo sullo sviluppo in SharePoint 2010 su Microsoft BEIT</title><id>/Blog/VideoAboutSharePoint2010Development.aspx</id><created>2011-5-30T9:35:55+01:00</created><content type="text/html" mode="escaped">Settimana scorsa è iniziato un &lt;a href="http://www.microsoft.com/italy/beit/Msdn.aspx?author=Giuseppe Marchi" title="Percorso formativo su SharePoint 2010" target="_blank"&gt;percorso formativo&lt;/a&gt; sullo sviluppo in SharePoint 2010 all'interno del sito &lt;a href="http://www.microsoft.com/italy/beit/" title="Microsoft BEIT" target="_blank"&gt;Microsoft BEIT&lt;/a&gt;. Questo percorso, tenuto da me e &lt;a href="http://blogs.devleap.com/paolo/" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt;, sarà formato da una serie di video utili a chi si approccia per la prima volta allo sviluppo di applicazioni all'interno del prodotto di collaborazione Microsoft.
&lt;br /&gt;Questa la scaletta che stiamo seguendo:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/italy/beit/Msdn.aspx?video=SharePoint-201035introduzione-per-gli-sviluppatori" target="_blank" title="SharePoint 2010: introduzione per gli sviluppatori"&gt;Introduzione alle novità di SharePoint 2010 per sviluppatori&lt;/a&gt; (Peppe)&lt;/li&gt;&lt;li&gt;Il modello ad oggetti di SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Sviluppo di Web Part (Peppe)&lt;/li&gt;&lt;li&gt;Introduzione al modello ad oggetti client-side (Peppe)&lt;ul&gt;&lt;li&gt;Modello per applicazioni .NET&lt;/li&gt;&lt;li&gt;Modello per applicazioni Silverlight&lt;/li&gt;&lt;li&gt;Modello per personalizzazioni Javascript&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;I REST services di SharePoint 2010 (Peppe)&lt;/li&gt;&lt;li&gt;Personalizzazione della barra dei Ribbon (Peppe)&lt;/li&gt;&lt;li&gt;LINQ to SharePoint (Paolo)&lt;/li&gt;&lt;li&gt;Data Provisioning (Peppe)&lt;/li&gt;Sviluppo di campi custom (Peppe)&lt;/li&gt;&lt;li&gt;Introduzione ai Business Connectivity Services (Peppe)&lt;/li&gt;&lt;li&gt;Sandbox Solutions in SharePoint 2010 (Paolo)&lt;/li&gt;&lt;li&gt;Workflow con SharePoint 2010 e Visual Studio 2010 (Paolo)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Vi lascio qua il primo video che da una panoramica a quelle che sono le novità che abbiamo a disposizione noi sviluppatori all'interno di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/italy/beit/Msdn.aspx?video=SharePoint-201035introduzione-per-gli-sviluppatori" target="_blank" title="SharePoint 2010: introduzione per gli sviluppatori"&gt;&lt;img src="http://www.peppedotnet.it/Images/BEIT_1.png" alt="SharePoint 2010: introduzione per gli sviluppatori" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A breve vedremo anche tutti gli altri.
&lt;br /&gt;Se volete poi, potete scaricare i sorgenti che ho scritto per registrare i video. Ecco quelli legati al primo video:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/BEIT_Demo1.zip" title="Sorgenti del video SharePoint 2010: introduzione per gli sviluppatori" target="_blank"&gt;BEIT_Demo1.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero veramente che questo percorso sia utile a chi di voi vuole approcciarsi allo sviluppo su SharePoint 2010. Se avete domande e/o curiosità non esitate a contattarmi.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/BeIT.aspx" title="TAG: BeIT"&gt;BeIT&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/VideoAboutSharePoint2010Development.aspx" /><issued>2011-5-30T9:35:55+01:00</issued><modified>2011-5-30T9:35:55+01:00</modified></entry><entry><title>Visualizzare controlli custom nella barra dei Ribbon posta in home page</title><id>/Blog/CustomRibbonVisibleAlsoInHomePage.aspx</id><created>2011-5-23T14:51:51+01:00</created><content type="text/html" mode="escaped">Abbiamo già visto che la barra dei Ribbon è personalizzabile nella maggior parte delle sue zone e abbiamo anche spiegato quale logica dobbiamo seguire per posizionare i nostri controlli all'interno dei gruppi già presenti nella barra. Se volete un riepilogo veloce, ecco qua l'elenco dei post a riguardo.
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Come creare un Ribbon in SharePoint 2010" href="http://www.peppedotnet.it/Blog/HowToWriteARibbonInSharePoint2010.aspx"&gt;Come creare un Ribbon in SharePoint 2010&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="La gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010" href="http://www.peppedotnet.it/Blog/ControlPositionOnSharePoint2010RibbonBar.aspx"&gt;La gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Template di un controllo Ribbon posto all interno di un gruppo pre-esistente" href="http://www.peppedotnet.it/Blog/SharePoint2010RibbonTemplateAlias.aspx"&gt;Template di un controllo Ribbon posto all'interno di un gruppo pre-esistente&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Le icone di un controllo personalizzato all interno della barra dei Ribbon" href="http://www.peppedotnet.it/Blog/SharePoint2010RibbonControlsImages.aspx"&gt;Le icone di un controllo personalizzato all'interno della barra dei Ribbon&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-left: 15px;"&gt;&lt;b&gt;- &lt;/b&gt;&lt;a title="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell utente corrente" href="http://www.peppedotnet.it/Blog/EnableOrDisableASharePoint2010RibbonButton.aspx"&gt;Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;In pratica, dopo aver scelto i valori degli attributi RegistrationType e RegistrationId dell'elemento CustomAction, dobbiamo preoccuparci di posizionare il nostro controllo nella gerarchia già presente valorizzando l'attributo Location dell'elemento CommandUIDefinition.
&lt;br /&gt;Abbiamo detto che, per inserire i nostri Ribbon all'interno dei vari tab e dei vari gruppi, vale la seguente regola:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;b&gt;Ribbon.[Tab].[Group].Controls._children &lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;Se però, proviamo a visualizzare lo stesso ribbon in home page o in una qualsiasi web part/wiki page, vi accorgerete che i vostri controlli personalizzati non saranno visibili all'interno della barra dei ribbon.
&lt;br /&gt;
&lt;br /&gt;Questo perchè la &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.xsltlistviewwebpart.aspx" title="XsltListViewWebPart class" target="_blank"&gt;XsltListViewWebPart&lt;/a&gt; ha di default l'attributo "ToolbarType" valorizzato a "Summary Toolbar".
&lt;br /&gt;Per permettere la corretta visualizzazione dei vostri elementi personalizzati all'interno della Ribbon bar anche su pagine di questo tipo, ci basta semplicemente valorizzare tale proprietà a &lt;b&gt;"Full Toolbar"&lt;/b&gt;.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/02_RibbonInHomePage.jpg" alt="Visualizzare controlli custom nella barra dei Ribbon posta in home page" /&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/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CustomRibbonVisibleAlsoInHomePage.aspx" /><issued>2011-5-23T14:51:51+01:00</issued><modified>2011-5-23T14:51:51+01:00</modified></entry><entry><title>Annunciato il Service Pack 1 di SharePoint 2010</title><id>/Blog/AnnouncedSharePoint2010SP1.aspx</id><created>2011-5-17T9:31:23+01:00</created><content type="text/html" mode="escaped">Finalmente un pò di news da svelare al pubblico :)
&lt;br /&gt;Dal &lt;a href="http://blogs.technet.com/b/office_sustained_engineering/archive/2011/05/16/announcing-service-pack-1-for-office-2010-and-sharepoint-2010.aspx" title="Anouncing the Service Pack 1 for Office 2010 and SharePoint 2010" target="_blank"&gt;blog del team degli Office Updates&lt;/a&gt; possiamo leggere la notizia del rilascio del primo service pack per SharePoint 2010 (e per tutta la famiglia Office 2010). Non c'è ancora una data ufficiale, ma possiamo sapere che di per certo verrà rilasciato &lt;span style="text-decoration: underline"&gt;alla fine del prossimo giugno 2011&lt;/span&gt;.
&lt;br /&gt;Per le versioni localizzate, state pur tranquilli perchè verranno rilasciate tutte quante simultaneamente.
&lt;br /&gt;
&lt;br /&gt;All'interno dell'aggiornamento, oltre alla solita marea di hotfix che sono già stati rilasciati da Microsoft nel corso di questo periodo e a parecchie correzioni non ancora rilasciate, abbiamo un pò di aggiunte molte importanti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Il pieno supporto per Internet Explorer 9 e per Google Chrome sia di SharePoint 2010 che delle Office Web Applications&lt;/li&gt;&lt;li&gt;La possibilità di recuperare siti cancellati dal cestino (ad oggi era possibile solo per liste, document libray e singoli elementi)&lt;/li&gt;&lt;li&gt;La possibilità di ricercare all'interno dei file PPSX&lt;/li&gt;&lt;li&gt;Un nuovo comando Powershell per spostare una site collection da un database di contenuti all'altro (comando "Move-SPSite")&lt;/li&gt;&lt;li&gt;Funzionalità aggiuntive e avanzate per quanto riguarda la parte di backcup e restore&lt;/li&gt;&lt;li&gt;Ripristino della pagina StoreMan.asxp (per gestione dello storage)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Potete trovare ulteriori informazioni direttamente dal blog del team di SharePoint 2010 a questo indirizzo:
&lt;br /&gt;- &lt;a href="http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=973" title="Service Pack 1 for SharePoint 2010" target="_blank"&gt;http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=973&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per completezza, sappiate che il service pack 1 di SharePoint 2010 contiene tutti questi hotfix:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2528533"&gt;Office 2010 April 2011 Cumulative Update (KB 2528533)&lt;/a&gt; – Released April 26, 2011&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2535422"&gt;Security and Non-Security Updates for April 2011&lt;/a&gt; – Released April 12, 2011&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2518242"&gt;Security and Non-Security Updates for March 2011&lt;/a&gt; – Released March 8, 2011&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2493730"&gt;Office 2010 February 2011 Cumulative Update (KB 2493730)&lt;/a&gt; – Released February 22, 2011&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2500894"&gt;Security and Non-Security Updates for February 2011&lt;/a&gt; – Released February 8, 2011 &lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2490385"&gt;Non-Security Updates for January 2011&lt;/a&gt; – Released January 11, 2011&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2479673"&gt;Office 2010 December 2010 Cumulative Update (KB 2479673)&lt;/a&gt; – Released December 14, 2010 &lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2479674"&gt;Security and Non-Security Updates for December 2010&lt;/a&gt; – Released December 14, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2458112"&gt;Security and Non-Security Updates for November 2010&lt;/a&gt; – Released November 9, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2449183"&gt;Office 2010 October 2010 Cumulative Update (KB 2449183)&lt;/a&gt; – Released October 26, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2427483"&gt;Security and Non-Security Updates for October 2010&lt;/a&gt; – Released October 12, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2411165"&gt;Security and Non-Security Updates for September 2010&lt;/a&gt; – Released September 14, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2396341"&gt;Office 2010 August 2010 Cumulative Update (KB 2396341)&lt;/a&gt; – Released August 31, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2344294"&gt;Security and Non-Security Updates for August 2010&lt;/a&gt; – Released August 10, 2010&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2279990"&gt;Security and Non-Security Updates for July 2010&lt;/a&gt; – Released July 13, 2010 &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/2259686"&gt;Office 2010 June 2010 Cumulative Update (KB 2259686)&lt;/a&gt; – Released June 29, 2010 &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Service Pack.aspx" title="TAG: Service Pack"&gt;Service Pack&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AnnouncedSharePoint2010SP1.aspx" /><issued>2011-5-17T9:31:23+01:00</issued><modified>2011-5-17T9:31:23+01:00</modified></entry><entry><title>Community tour su SharePoint Online @ SMAU di Bologna - 9 giugno 2011</title><id>/Blog/SharePointOnlineCommunityTourSMAUBologna.aspx</id><created>2011-5-16T9:48:35+01:00</created><content type="text/html" mode="escaped">&lt;div style="margin-left: 10px; float: right;"&gt;&lt;a title="SharePointCommunity.it - La community italiana per i professionisti SharePoint" href="http://www.sharepointcommunity.it" target="_blank"&gt;&lt;img alt="SharePointCommunity.it - La community italiana per i professionisti SharePoint" src="http://www.peppedotnet.it/Images/spCommunity.jpg"&gt;&lt;/a&gt;
&lt;br /&gt;&lt;img alt="SMAU BOLOGNA" src="http://www.powershell.it/ReusableItems/Graphics/News/sb11_logo_padova11.jpg"&gt;&lt;/div&gt;Dopo la &lt;a href="http://www.peppedotnet.it/Blog/SharePointOnlineCommunityTourSMAUPadova.aspx" title="Community tour @ Padova" target="_blank"&gt;tappa di Padova&lt;/a&gt;, il community tour arriva anche allo SMAU di Bologna ! 
&lt;br /&gt;&lt;a title="SharePoint Community @ SMAU Padova" href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=14" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt;, la community italiana per professionisti che lavorano su SharePoint, assieme a PowerShell.it (la community italiana su Windows PowerShell) partecipa al community tour di Microsoft presentando due sessioni durante lo &lt;a title="SMAU Padova" href="http://www.smau.it" target="_blank"&gt;SMAU di Bologna&lt;/a&gt; il giorno &lt;b&gt;9 giugno 2011&lt;/b&gt;.
&lt;br /&gt;&lt;br&gt;Nello specifico, io vi darò un'introduzione e un'anteprima di SharePoint Online (la piattaforma di collaborazione on the cloud, targata Office 365), Francesco vi parlerà invece di virtualizzazione ed Efran affronterà il remote management attraverso Powershell.
&lt;br /&gt;Questa l'agenda nel dettaglio:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-decoration: underline;"&gt;10:00 - 10:30&lt;/span&gt;
&lt;br /&gt;&lt;b&gt;Welcome e keynote - PierGiorgio Malusardi&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-decoration: underline;"&gt;10:30 - 11:30&lt;/span&gt;
&lt;br /&gt;&lt;b&gt;SharePoint in the cloud - Giuseppe Marchi&lt;/b&gt;
&lt;br /&gt;In questa sessione cercheremo di conoscere l'offerta di Microsoft per quanto riguarda SharePoint in the cloud, all'interno del programma Office 365. Vedremo quali sono le principali caratteristiche e funzionalità del prodotto, le differenze rispetto alle normali installazioni on-premise e le modalità di gestione di contenuti e infrastruttura, assieme alle modalità di deployment di eventuali personalizzazioni. 
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-decoration: underline;"&gt;11:30 - 12:30&lt;/span&gt;
&lt;br /&gt;&lt;b&gt;Virtualize a SharePoint 2010 Environment - Francesco Sodano&lt;/b&gt;
&lt;br /&gt;La virtualizzazione degli ambienti di sviluppo e produzione rappresentano ormai uno standard aziendale in molte società. In questa sessione si farà il punto su come è possibile virtualizzare un ambiente SharePoint 2010 su Microsoft Hyper-V (sia esso sviluppo o produzione), quali sono i vantaggi offerti e i punti di attenzione da tenere presente. Si mostrerà inoltre come creare una macchina virtuale SharePoint 2010 da utilizzare come template per SCVMM.
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-decoration: underline;"&gt;12:30 - 13:30&lt;/span&gt;
&lt;br /&gt;&lt;b&gt; Windows PowerShell 2.0 ed il remote management - Efran Cobisi&lt;/b&gt;
&lt;br /&gt;Il remote management è una delle novità più interessanti di PowerShell 2.0 e consente di gestire in completa autonomia e sicurezza le proprie macchine attraverso la rete, dalla riga di comando; non si tratta di un semplice sostituto di RCMD ma di una nuova ed articolata infrastruttura, costruita sulle basi del framework 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Per registrarvi dovete seguire questo link:
&lt;br /&gt;&lt;a title="Iscritivi a SMAU Bologna" href="http://www.smau.it/invite/microsoft-10" target="_blank"&gt;http://www.smau.it/invite/microsoft-10&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi aspettiamo ! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a title="TAG: SharePoint" href="http://www.peppedotnet.it/Tags/SharePoint.aspx"&gt;SharePoint&lt;/a&gt;] [&lt;a title="TAG: SharePoint Online" href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx"&gt;SharePoint Online&lt;/a&gt;] [&lt;a title="TAG: Office 365" href="http://www.peppedotnet.it/Tags/Office 365.aspx"&gt;Office 365&lt;/a&gt;] [&lt;a title="TAG: SharePoint Community" href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx"&gt;SharePoint Community&lt;/a&gt;]            </content><link rel="alternate" type="text/html" href="/Blog/SharePointOnlineCommunityTourSMAUBologna.aspx" /><issued>2011-5-16T9:48:35+01:00</issued><modified>2011-5-16T9:48:35+01:00</modified></entry><entry><title>Office 365 browsers compatibility</title><id>/Blog/Office365BrowsersCompatibility.aspx</id><created>2011-5-10T12:29:24+01:00</created><content type="text/html" mode="escaped">Come sapete, è da poco pubblica la beta di Office 365! Il che vuol dire che voi potete accedervi facendo richiesta e che io invece posso finalmente fare uno screenshot e pubblicarlo sul sito! :)
&lt;br /&gt;Attualmente, tutti gli applicativi software esposti dalla piattaforma Microsoft Office 365 e il portale di amministrazione, sono funzionanti e (sopratutto) supportati se utilizzati tramite i seguenti browser:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internet Explorer 9, Internet Explorer 8 e Internet Explorer 7 installati su Windows 7&lt;/li&gt;&lt;li&gt;Internet Explorer 8 e Internet Explorer 7 installati su Windows Vista (con service pack 2)&lt;/li&gt;&lt;li&gt;Internet Explorer 8 e Internet Explorer 7 installati su Windows XP (con service pack 3)&lt;/li&gt;&lt;li&gt;Mozilla Firefox 3.x installato su Windows 7 o su Windows Vista (con service pack 2)&lt;/li&gt;&lt;li&gt;Apple Safari installato su Mac OS X versione 10.6 o 10.5&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Se proviamo infatti ad accedere al portale &lt;a href="https://portal.microsoftonline.com" title="Office 365" target="_blank"&gt;https://portal.microsoftonline.com&lt;/a&gt; con Chrome, ci viene visualizzato questo avviso:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/02_ChromeErrorPortal.jpg" title="Office 365 browsers compatibility" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/02_ChromeErrorPortal_s.jpg" alt="Office 365 browsers compatibility" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Che comunque ci permette di continuare la navigazione all'interno del portale. Ad oggi io non ho trovato le pagine non funzionanti che cita questo avviso (e se ne trovate voi, vi prego di segnalarmele).
&lt;br /&gt;Per quanto riguarda invece l'utilizzo di Outlook Web App (la versione on-line del client posta per Exchange Online 2010), sono invece supportati questi browser:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Internet Explorer 7 o versione successiva (su Windows 7, Windows Vista SP2, Windows XP SP3)&lt;/li&gt;&lt;li&gt;Firefox 3 o versione successiva&lt;/li&gt;&lt;li&gt;Safari 3 o versione successiva su Macintosh OS X 10.5 o superiore&lt;/li&gt;&lt;li&gt;Chrome 3 e versioni successive&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;In ogni modo, esiste anche una versione di Outlook Web App che supporta un set ridotto di funzionalità così da permettere l'utilizzo della maggior parte dei browser.
&lt;br /&gt;Potete trovare il resto dei requisiti software a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/it-it/office365/small-business/beta.aspx#SystemRequirements" title="" target="_blank"&gt;http://www.microsoft.com/it-it/office365/small-business/beta.aspx#SystemRequirements&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Specifiche a parte, ho fatto anche io un pò di prove e questi sono i risultati:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;FIREFOX&lt;/b&gt; (io ho provato la versione 4)
&lt;br /&gt;Nessun problema riscontrato.
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/05_FirefoxOutlookWebApp.jpg" title="Office 365 browsers compatibility - Firefox" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/05_FirefoxOutlookWebApp_s.jpg" alt="Office 365 browsers compatibility - Firefox" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/06_FirefoxSharePointOnline.jpg" title="Office 365 browsers compatibility" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/06_FirefoxSharePointOnline_s.jpg" alt="Office 365 browsers compatibility" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;CHROME&lt;/b&gt; (io ho provato la versione 10.0.648.204)
&lt;br /&gt;Nonostante l'avviso all'apertura del portale, non ho trovato alcun tipo di malfunzionamento ne nella pagina principale ne nelle varie pagine di configurazione utenti, gruppi, ecc..
&lt;br /&gt;Anche provando ad accedere a SharePoint Online, nessun errore o malfunzionamento visibile.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/01_ChromeSharePointOnline.jpg" title="Office 365 browsers compatibility - Chrome" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/01_ChromeSharePointOnline_s.jpg" alt="Office 365 browsers compatibility - Chrome" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'unica cosa che mi è capitata è stata utilizzando Outlook Web App. Avendo già aperto il sito in un primo tab e provando ad aprire il secondo tab con lo stesso indirizzo, mi è venuto fuori questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/03_ChromeErrorOutlook.jpg" title="Office 365 browsers compatibility - Chrome" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/03_ChromeErrorOutlook_s.jpg" alt="Office 365 browsers compatibility - Chrome" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A parte questo, anche la versione del client di posta per Exchange Online 2010 è perfettamente funzionante anche su Chrome.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/04_ChromeOutlookWebApp.jpg" title="Office 365 browsers compatibility - Chrome" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/04_ChromeOutlookWebApp_s.jpg" alt="Office 365 browsers compatibility - Chrome" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;SAFARI&lt;/b&gt; (su Mac OS)
&lt;br /&gt;In base alla versione, viene visualizzato il solito warning durante l'apertura del portale, ma nonostante questo sembra tutto funzinonante anche su Mac OS.
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/07_Mac.jpg" title="Office 365 browsers compatibility - Safari" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/07_Mac_s.jpg" alt="Office 365 browsers compatibility - Safari" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/08_Mac.jpg" title="Office 365 browsers compatibility - Safari" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365BrowserCompatibiity/08_Mac_s.jpg" alt="Office 365 browsers compatibility - Safari" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;Non ho provato ancora su Linux, ma credo sia lo stesso discorso sia per Chrome che per Firefox (se qualcuno ha info a riguardo, mi faccia pure sapere).
&lt;br /&gt;Invece, per chi di voi sta già utilizzando la beta e avete qualche malfunzionamento da segnalare per quanto riguarda la compatibilità di Office 365 con il vostro browser, scrivetemi pure a info@peppedotnet.it !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Office365BrowsersCompatibility.aspx" /><issued>2011-5-10T12:29:24+01:00</issued><modified>2011-5-10T12:29:24+01:00</modified></entry><entry><title>Office 365 - Installare applicazioni Silverlight su SharePonit Online</title><id>/Blog/InstallSilverlightAppsInOffice365SharePointOnline.aspx</id><created>2011-5-3T15:54:43+01:00</created><content type="text/html" mode="escaped">Se vogliamo pensare di sviluppare per SharePoint Online dobbiamo metterci in testa di imparare ad utilizzare le soluzioni di tipo Sandbox e di cercare i modi di implementare le nostre personalizzazioni sfruttando le funzionalità (ma soprattutto i limiti) proprie di questo tipo di soluzioni.
&lt;br /&gt;Detto questo, se volessimo portare e fruire da un sito SharePoint Online un'applicazione Silverlight, dobbiamo cercare di effettuare il provisioning del .XAP generato attraverso, appunto, una soluzione di tipo Sandbox. In questo senso, dobbiamo effettuare l'installazione di tale file all'interno di una document library, utilizzando una feature e un module.
&lt;br /&gt;Vediamo passo per passo come possiamo fare.
&lt;br /&gt;
&lt;br /&gt;1- Per prima cosa dobbiamo creare un nuovo progetto utilizzando il template "Empty SharePoint Project"
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/02.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/02s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;2- Scegliamo la tipologia "Sandbox" per la nostra nuova soluzione
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/03.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/03s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;3- Aggiungiamo un nuovo elemento alla nostra soluzione SharePoint
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/04.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/04s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;4- Scegliamo il template d'elemento "Module"
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/05.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/05s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;5- Cancelliamo il file di testo (.txt) che viene creato in automatico e copiamo il file .XAP proprio dell'applicazione Silverlight che vogliamo installare all'interno del nostro sito SharePoint Online.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/06.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/06s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;6- Modifichiamo il file "Elements.xml" in modo da installare il file .XAP all'interno della library "Site Assets".
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;!--&lt;/span&gt;&lt;span style='color:#FF0000'&gt; install Silvrelight application into Site Assets library --&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;Module&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="InstallXAP"&lt;/span&gt; Url&lt;span style='color:#0000FF'&gt;="SiteAssets"&lt;/span&gt; RootWebOnly&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;File&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Path&lt;span style='color:#0000FF'&gt;="InstallXAP\SilverlightLovesOffice365.xap"&lt;/span&gt; Url&lt;span style='color:#0000FF'&gt;="SilverlightLovesOffice365.xap"&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;Module&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;7- Scegliamo l'opzione "Package" così da permettere a Visual Studio 2010 di creare il file .wsp che potremo poi installare all'interno della nostra site collection SharePoint Online.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/07.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/07s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;8- Accediamo all'interno della site collection in cui vogliamo installare ed utilizzare l'applicazione Silverlight e accediamo alla "Solution gallery" reperibile seguendo il percorso: "Site actions &gt; Site settings &gt; Solutions". All'interno della gallery, effettuare l'upload del file .WSP appena generato da Visual Studio 2010.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/08.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/08s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;9- Una volta inserita la nostra soluzione all'interno della gallery, scegliamo di attivarla. Così da poter usufruire delle personalizzazioni che abbiamo appena sviluppato.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/09.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/09s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;10- Modifichiamo la pagina in modo da poter inserire la Silverlight Web Part
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/10.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/10s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;11- Aggiungiamo la Silverlight Web Part all'interno della pagina
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/11.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/11s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;12- Modifichiamo la Silverlight Web Part e selezioniamo il tasto "Configure", così da poter specificare il percorso relativo del file .XAP
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/12.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/12s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;13- Settiamo un'altezza fissa per la nostra web part (se non facciamo questa operazione, la Silverlight Web Part andrà in errore)
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/13.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/13s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;14 - Fatto questo, possiamo vedere la nostra applicazione Silverlight all'interno del nostro sito SharePoint Online.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365InstallSilverlight/14.jpg" title="Office 365 - Installare applicazioni Silverlight su SharePonit Online" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365InstallSilverlight/14s.jpg" alt="Office 365 - Installare applicazioni Silverlight su SharePonit Online" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ho proposto la stessa demo anche alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2011" target="_blank"&gt;SharePoint Conference&lt;/a&gt; appena passata, ma chiaramente non ha funzionato :)
&lt;br /&gt;Vi lascio anche i sorgenti così da potete veder bene la Sandbox solution ed utilizzarla come punto di partenza.
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/SilverlightLovesOffice365.zip" title="Download codice sorgente" target="_blank"&gt;SilverlightLovesOffice365 (695 Kb)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;I sorgenti potete tranquillamente provarli sulla vostra installazione di SharePoint in locale, se non avete ancora accesso alla beta pubblica di Office 365. In generale, potete fare in locale tutte le attività di test e debug della vostra soluzione Sandbox per poi portarla on-line.
&lt;br /&gt;
&lt;br /&gt;Vi ricordo invece che se volete un'anteprima di SharePoint Online e della piattaforma Office 365, potete venire allo &lt;a title="SMAU Padova 5 maggio" href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=13" target="_blank"&gt;SMAU di Padova il 5 maggio&lt;/a&gt;. Vi rimando a &lt;a title="Community tour su SharePoint Online @ SMAU di Padova - 5 maggio 2011" href="http://www.peppedotnet.it/Blog/SharePointOnlineCommunityTourSMAUPadova.aspx" target="_blank"&gt;questo post&lt;/a&gt; per ulteriori informazioni.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&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/InstallSilverlightAppsInOffice365SharePointOnline.aspx" /><issued>2011-5-3T15:54:43+01:00</issued><modified>2011-5-3T15:54:43+01:00</modified></entry><entry><title>Office 365 - SharePoint Online new Silverlight User Experience</title><id>/Blog/Office365SharePointOnlineNewSilverlightExperience.aspx</id><created>2011-4-28T9:1:43+01:00</created><content type="text/html" mode="escaped">All'uscita di SharePoint 2010 &lt;a href="http://www.peppedotnet.it/Blog/SilverlightCreationExperienceInSharePoint2010.aspx" title="Silverlight creation experience in SharePoint 2010" target="_blank"&gt;parlavamo&lt;/a&gt; già della forte integrazione del prodotto di collaborazione Microsoft con Silverlight, sia per tutte le funzionalità Out Of the Box esposte (Silverlight Web Part, Silverlight Media Web Part, Organization Browser Web Part, maschera per la creazione di nuove liste e/o document library, maschera per la creazione di nuovi siti, ecc.. ), sia per la possibilità di estensione della UI tramite applicazioni Silverlight personalizzate.
&lt;br /&gt;A tal proposito, abbiamo appena parlato di integrazione tra Silverlight e SharePoint 2010 alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2011" target="_blank"&gt;SharePoint Conference&lt;/a&gt; e, per chi non è potuto venire, vi assicuro che se ne possono fare delle belle !
&lt;br /&gt;Comunque, volevo rassicurarvi che all'interno del prodotto SharePoint Online (parte della suite Office 365) sono comunque rimaste tutte le applicazioni Silverlight che abbiamo appena citato e che in più è stata introdotta una nuova maschera per la selezione e l'inserimento di web part all'interno della pagina.
&lt;br /&gt;Possiamo accedere a questa visualizzazione modificando una qualsiasi pagina del nostro sito su SharePoint Online e facendo click sul tasto "Altre web part" presente nella barra dei Ribbon (come vi sarete accorti, anche questo tab è stato modificato rispetto alla versione di SharePoint on premise).
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/01.jpg" title="Office 365 - SharePoint Online new Silverlight User Experience" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/01small.jpg" alt="Office 365 - SharePoint Online new Silverlight User Experience" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta scelta l'azione di inserimento di una web part dalla barra dei Ribbon, possiamo scegliere la web part (o lista/document library) che abbiamo intenzione di inserire nella pagina, utilizzando la nuova applicazione Silverlight in questione.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/02.jpg" title="Office 365 - SharePoint Online new Silverlight User Experience" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/02small.jpg" alt="Office 365 - SharePoint Online new Silverlight User Experience" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Come vedete è molto simile a quella di creazione di nuovi contenuti. In parole povere, visualizza tutte le web part abilitate a livello di site collection e che quindi possiamo inserire nella pagina, con la possibilità di filtrarle in base alla categoria di appartenenza (vengono visualizzate anche tutte le categorie custom per le nostre web part).
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/03.jpg" title="Office 365 - SharePoint Online new Silverlight User Experience" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/03small.jpg" alt="Office 365 - SharePoint Online new Silverlight User Experience" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se invece stiamo utilizzando una macchina dove non è stato installato il plugin di Silverlight oppure un browser che non lo supporta, vedremo in automatico la visualizzazione cui siamo sempre stati abituati nella versione di SharePoint on premise.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/04.jpg" title="Office 365 - SharePoint Online new Silverlight User Experience" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365SilverlightUserExperience/04small.jpg" alt="Office 365 - SharePoint Online new Silverlight User Experience" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A breve vedremo quanto è facile installare un'applicazione Silverlight personalizzata all'interno di SharePoint Online.
&lt;br /&gt;Vi ricordo invece che se volete un'anteprima di SharePoint Online e della piattaforma Office 365, potete venire allo &lt;a href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=13" title="SMAU Padova 5 maggio" target="_blank"&gt;SMAU di Padova il 5 maggio&lt;/a&gt;. Vi rimando a &lt;a href="http://www.peppedotnet.it/Blog/SharePointOnlineCommunityTourSMAUPadova.aspx" title="Community tour su SharePoint Online @ SMAU di Padova - 5 maggio 2011" target="_blank"&gt;questo post&lt;/a&gt; per ulteriori informazioni.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&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/Office365SharePointOnlineNewSilverlightExperience.aspx" /><issued>2011-4-28T9:1:43+01:00</issued><modified>2011-4-28T9:1:43+01:00</modified></entry><entry><title>Microsoft Technical Conferences - Day 1</title><id>/Blog/MSTC2011Day1.aspx</id><created>2011-4-19T16:34:59+01:00</created><content type="text/html" mode="escaped">Eccomi qua, direttamente dalle &lt;a href="http://www.sharepointconference.it" title="Microsoft Technical Conferences" target="_blank"&gt;Microsoft Technical Conferences&lt;/a&gt;, a scrivervi del primo giorno.
&lt;br /&gt;Anche se non ancora finito, è stata davvero una bella giornata !
&lt;br /&gt;Il posto è veramente gigante ! Tanti gli sponsor e tante le persone che sono arrivate stamattina qui a Milano Fiera (c'è qualcuno che è andato ad Assaggo stamattina, ma non vorrei far nomi...). Non vi dico il pranzo.... :)
&lt;br /&gt;Io le mie due sessioni le ho fatte e spero tanto che siano piacitue (stiamo aspettando ancora i feedback). 
&lt;br /&gt;Domani mattina, dopo la keynote, parleremo invece in dettaglio del Client Object Model di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Per cui.. A domani ! :)
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/spoc11Pie.jpg" alt="PeppeDotNet @ Microsoft Tecnical Conferences" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MSTC2011Day1.aspx" /><issued>2011-4-19T16:34:59+01:00</issued><modified>2011-4-19T16:34:59+01:00</modified></entry><entry><title>Office 365 in beta pubblica !</title><id>/Blog/PublicBetaForOffice365.aspx</id><created>2011-4-18T9:47:32+01:00</created><content type="text/html" mode="escaped">&lt;a title="Microsoft Office 365" href="http://office365.microsoft.com" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Microsoft Office 365" src="http://www.peppedotnet.it/Images/office365.jpg"&gt;&lt;/a&gt;Da oggi, il pacchetto di prodotti &lt;a href="http://www.peppedotnet.it/Blog/Office365Intro.aspx" title="Office 365" target="_blank"&gt;Office 365&lt;/a&gt; è entrato in beta pubblica !
&lt;br /&gt;Questo significa che in 37 paesi (compreso il nostro) è possibile iscriversi e provare le funzionalità della prossima versione di Office "on the cloud" e delle versioni di SharePoint, Exchange e Lync fruite on-line, in 17 lingue diverse !
&lt;br /&gt;
&lt;br /&gt;Per potersi iscrivere, fate la vostra richiesta su questo sito:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/it-it/office365/online-software.aspx" title="Office 365" target="_blank"&gt;http://www.microsoft.com/it-it/office365/online-software.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Inoltre, se volete avere un'introduzione sulla piattaforma Office 365 e, in particolare, su SharePoint OnLine, vi ricordo che potete ancora iscrivervi alla &lt;a href="http://www.sharepointconference.it" target="_blank" title="SharePoint Conference"&gt;Microsoft SharePoint &amp; Office Conference&lt;/a&gt; di domani (19 Aprile 2011), dove ci saranno ben due sessioni proprio su questi due prodotti.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/PublicBetaForOffice365.aspx" /><issued>2011-4-18T9:47:32+01:00</issued><modified>2011-4-18T9:47:32+01:00</modified></entry><entry><title>DotNetCampus 2011 - Slide e demo: Fantacalcio con SharePoint 2010</title><id>/Blog/DotNetCampusDemoFantacalcioSharePoint.aspx</id><created>2011-4-11T13:9:4+01:00</created><content type="text/html" mode="escaped">Si è da poco conlcusa anche la seconda tappa del &lt;a title=".NET Campus 2011 - Milano" href="http://www.dotnetcampus.it" target="_blank"&gt;DotNetCampus 2011&lt;/a&gt; qui a Milano, un evento veramente interessante e ben pensato dal gruppo &lt;a href="http://www.devleap.com" title="DevLeap" target="_blank"&gt;DevLeap&lt;/a&gt;, Microsoft e tutto il gruppo Microsoft Student Partners. 
&lt;br /&gt;E' stata una bella giornata, come quella di Roma, piena di ragazzi provenienti da molte università del nord italia, venuti appositamente per vedere le tecnologie che sono in voga al momento, legate al mondo Microsoft.
&lt;br /&gt;Il mio "esperimento" su SharePoint sinceramente non so come sia andato, ma credo bene.
&lt;br /&gt;Parlare di SharePoint ad un pubblico che non è ancora entrato nel mondo del lavoro e delle aziende è stata comunque una bella esperienza e spero davvero di aver incuriosito qualcuno che magari voglia addentrarsi un pò di più nei vari dettagli del prodotto.
&lt;br /&gt;La dome è stata sicuramente il punto forte.. Una bella applicazione per giocare al fantacalcio, fruibile attraverso SharePoint e realizzata con una singola soluzione di tipo Sandbox (il che significa che adesso la vado a mettere anche su Office 365 ;)
&lt;br /&gt;Ecco qua un pò di screenshot.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Il sito completo, alla fine della demo&lt;/b&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio1.png" title="Fantacalcio con SharePoint 2010" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio1_l.png" alt="Fantacalcio con SharePoint 2010" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Il dettaglio di una partita&lt;/b&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio2.png" title="Fantacalcio con SharePoint 2010" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio2_l.png" alt="Fantacalcio con SharePoint 2010" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Il dettaglio di una squadra con rosa e formazione base&lt;/b&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio3.png" title="Fantacalcio con SharePoint 2010" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/SharePointFantacalcio/fantacalcio3_l.png" alt="Fantacalcio con SharePoint 2010" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'applicazione per ora supporta 8 fanta squadre ed è basata sui voti e sulle quotazioni dei calciatori prodotte del sito &lt;a href="http://www.fantagazzetta.com" target="_blank" title="Fantagazzetta.com"&gt;Fantagazzetta.com&lt;/a&gt; !
&lt;br /&gt;Uno dei primi step da fare, una volta installata ed attivata la soluzione Sandbox è infatti quello di abilitare la feature chiamata "Football Manager - Structures" a livello di sito e fare l'upload di un file excel, preso dal Fantagazzetta.com e contenente l'elenco dei giocatori si serie A.
&lt;br /&gt;
&lt;br /&gt;La feature creare le seguenti liste (basate su altrettanti Content Type e relative List Definition):
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Images - per raccogliere immagini utili all'applicazione&lt;/li&gt;&lt;li&gt;Matches - il calendario dell'anno fanta-calcistico&lt;/li&gt;&lt;li&gt;Matches archive - per salvare le formazioni di ogni giornata&lt;/li&gt;&lt;li&gt;System pages - per contenere le pagine dell'applicazione&lt;/li&gt;&lt;li&gt;Players archive - per effettuare l'upload del file Excel di quotazioni dei giocatori&lt;/li&gt;&lt;li&gt;Players - lista di giocatori raggruppata per fanta-squadra e per ruolo&lt;/li&gt;&lt;li&gt;Teams - lista delle 8 fanta squadre, con i relativi mister e crediti residui&lt;/li&gt;&lt;li&gt;Votes - document library per archiviare i voti di ogni giornata e per calcolare i risultati&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;In tutto sono state sviluppate ben 9 web part:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GenerateCalendar web part - per la generazione automatica dei primi due gironi di un calendario calcistico&lt;/li&gt;&lt;li&gt;GenerateSampleTeams - per la configurazione dimostrativa di alcune squadre&lt;/li&gt;&lt;li&gt;InsertFormation - per il rendering dell'applicazione Silverlight in grado di permettere l'inserimento della formazione&lt;/li&gt;&lt;li&gt;LastTurn - per visualizzare il turno appena giocato&lt;/li&gt;&lt;li&gt;Match - per visualizzare i dettagli di una singola partita&lt;/li&gt;&lt;li&gt;NextTurn - per visuaizzare il turno da giocare&lt;/li&gt;&lt;li&gt;Ranking - per visualizzare la classifica in formato testuale&lt;/li&gt;&lt;li&gt;Team - per visualizzare i dettagli di una squadra&lt;/li&gt;&lt;li&gt;UserControlPanel - per visualizzare il pannello di gestione della propria squadra&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Assieme a queste strutture, sono stati sviluppati anche:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3 event receiver, rispettivamente per inserire i giocatori a partire dal file Excel di quotazioni di Fantagazzetta.com, calcolare i voti di ogni giocatore nelle formazioni della giornata corrente, aggiornare la classifica in base ai risultati delle varie partire&lt;/li&gt;&lt;li&gt;Un ribbon personalizzato, per aggiornare la giornata fanta-calcistica corrente&lt;/li&gt;&lt;li&gt;2 applicazioni Silverlight, rispettivamente per inserire la formazione e visualizzare la formazione base di ogni squadra e per visualizzare la classifica tramite grafico a barre&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Il tutto utilizzando le principali tecniche di provisioning e di programmazione tramite il modello ad oggetti lato server e quello lato client.
&lt;br /&gt;E' un'applicazione questa, che può essere presa tranquillamente come "applicazione tipo" per quanto riguarda la sviluppo su SharePoint 2010 tramite Sandbox solutions. A questo propostio, vi ricordo che questi argomenti e tanti altri, li vedremo durante la mia sessione "SharePoint Development Basics and Best Practices" che terrò alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference" target="_blank"&gt;Microsoft SharePoint &amp; Office Conference 2011&lt;/a&gt; di questo 19 Aprile.
&lt;br /&gt;
&lt;br /&gt;Per ora è veramente un draft (anche se le funzionalità di base di un sito del fantacalcio ce le ha tutte). Se qualcuno vuole modificarla e ampliarla mi &lt;a href="mailto:info@peppedotnet.it" title="Scrivimi"&gt;scriva&lt;/a&gt; che la mettiamo subito su codeplex !
&lt;br /&gt;
&lt;br /&gt;Questi sono i sorgenti dell'applicazione:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.SP2010.Fantacalcio.zip" title="Fantacalcio con SharePoint 2010" target="_blank"&gt;PeppeDotNet.SP2010.Fantacalcio.zip (9,95 MB)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Queste le slide:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/Introduzione SharePoint per DEV.pdf" title="Fantacalcio con SharePoint 2010" target="_blank"&gt;Introduzione SharePoint per DEV.pdf (3,93 MB)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Questi sono i sorgenti della web part "Hello World" fatta alla tappa di Milano:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/DotNetCampusMilano.zip" title="Hello World web part" target="_blank"&gt;DotNetCampusMilano.zip (55,3 KB)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per chi era presente e vuole avvicinarsi ancora di più al mondo di SharePoint, si faccia avanti e mi scriva ! ;)
&lt;br /&gt;
&lt;br /&gt;&lt;a title=".NET Campus 2011 - Milano" href="http://www.dotnetcampus.it" target="_blank"&gt;&lt;img title=".NET Campus 2011 - Milano" src="http://www.peppedotnet.it/Images/dotnetcampus.jpg"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/.NET Campus.aspx" title="TAG: .NET Campus"&gt;.NET Campus&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Fantacalcio.aspx" title="TAG: Fantacalcio"&gt;Fantacalcio&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DotNetCampusDemoFantacalcioSharePoint.aspx" /><issued>2011-4-11T13:9:4+01:00</issued><modified>2011-4-11T13:9:4+01:00</modified></entry><entry><title>Team Foundation Server e SharePoint 2010 claims authentication</title><id>/Blog/TFSWithSP2010ClaimsAuthentication.aspx</id><created>2011-4-4T9:50:8+01:00</created><content type="text/html" mode="escaped">Se vi capita di installare Team Foundation Server e volete utilizzare SharePoint 2010 per la gestione dei vari team site di progetto, fate molta attenzione alla tipologia di autenticazione con cui create la web application che sarà poi legata a TFS.
&lt;br /&gt;Ve lo dico perchè durante una delle ultime installazioni di SharePoint che ho fatto, mi è capitato un errore un pò particolare. Cercando infatti di creare un nuovo progetto dalla toolbox team explorer, il processo di creazione falliva e mi veniva ritornato il seguente errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;TF218017: A Sharepoint Site could not be created for use as the team project portal. The following error ocurred: Server was unable to process request. --&gt; The User does not exists or is not unique --&gt; The User does not exists or is not unique.&lt;/div&gt;
&lt;br /&gt;Qual'era effettivamente il problema ? Avevo creato la web application in cui volevo inserire tutti i team site legati ai miei progetti TFS, scegliendo la Claims Mode Authentication come metodologia di autenticazione. 
&lt;br /&gt;Ecco, questo tipo di authenticazione non è supportato da TFS. E' bastato infatti ricreare la web application utilizzando la Classic Mode Authentication per far funzionare tutto come dovrebbe.
&lt;br /&gt;Ve lo scrivo, perchè ad oggi non ho trovato alcun tipo di documentazione a riguardo. Quindi magari a qualcuno può esser utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/TFS.aspx" title="TAG: TFS"&gt;TFS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Claims.aspx" title="TAG: Claims"&gt;Claims&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/TFSWithSP2010ClaimsAuthentication.aspx" /><issued>2011-4-4T9:50:8+01:00</issued><modified>2011-4-4T9:50:8+01:00</modified></entry><entry><title>Office 365 community online !</title><id>/Blog/OnLineTheOffice365Community.aspx</id><created>2011-4-1T9:48:39+01:00</created><content type="text/html" mode="escaped">&lt;a title="Microsoft Office 365" href="http://office365.microsoft.com" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Microsoft Office 365" src="http://www.peppedotnet.it/Images/office365.jpg"&gt;&lt;/a&gt;Da ieri (31 marzo 2011) è on-line il sito della comunity di &lt;a href="http://www.peppedotnet.it/Blog/Office365Intro.aspx" title="Introduzione ad Office 365" target="_blank"&gt;Office 365&lt;/a&gt; a questo indirizzo:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://community.office365.com/en-us/default.aspx" title="Office 365 Community" target="_blank"&gt;http://community.office365.com&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che se volete una introduzione su Office 365, alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2011" target="_blank"&gt;Microsoft SharePoint &amp; Office Conference 2011&lt;/a&gt; ci saranno due sessioni di Antonio Gazzeri:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Introduzione a Microsoft Office 365 (19 Aprile alle 11.15 – Sala A)&lt;/b&gt;
&lt;br /&gt;Microsoft Office 365 è la nuova generazione di servizi online che comprende Microsoft Office, SharePoint Online, Exchange Online e Lync Online nella loro versione cloud, cioé offerti in modalità "Software as a Service" (SaaS) ad aziende di ogni dimensione. Questa sessione introduce Office 365 a 360° :-), toccando aspetti legati alle funzionalità disponibili, alla gestione delle identità e del single-sign-on, e ai percorsi di migrazione, il tutto con un mix ricco di demo sull'ambiente beta per rendere più concreti gli argomenti trattati.
&lt;br /&gt; 
&lt;br /&gt;&lt;b&gt;Introduzione a SharePoint Online (19 Aprile alle 14.00 – Sala A)&lt;/b&gt; 
&lt;br /&gt;SharePoint Online è SharePoint offerto in modalità "Software as a Services" (SaaS) da Microsoft ad aziende di tutte le dimensioni. Questa sessione introduce le caratteristiche del servizio SharePoint Online, nell'ambito della più ampia suite di soluzioni di Microsoft Online che comprende anche servizi di posta elettronica, di comunicazione ed altri. Dopo una breve carrellata sulle opzioni di servizio disponibili e in arrivo, ci concentreremo sulla nuova versione di SharePoint Online – attualmente in beta – inclusa nella suite Office 365. Analizzeremo le funzionalità disponibili, gli approcci per la personalizzazione e gli aspetti legati all'amministrazione del servizio, il tutto con un mix ricco di demo sull'ambiente beta per rendere più concreti gli argomenti trattati.
&lt;br /&gt; 
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OnLineTheOffice365Community.aspx" /><issued>2011-4-1T9:48:39+01:00</issued><modified>2011-4-1T9:48:39+01:00</modified></entry><entry><title>Come spostare un sito SharePoint: una precisazione</title><id>/Blog/HowToMoveSharePointSiteProgrammatically.aspx</id><created>2011-3-27T19:50:43+01:00</created><content type="text/html" mode="escaped">Ieri al .NET Campus, tra tutti gli altri amici e non, ho incontrato Giuliano, autore di un commento veramente utile ad uno dei miei &lt;a href="http://www.peppedotnet.it/Blog/HowToMoveSharePointSiteProgrammaticallyWithinTheSameSiteCollection.aspx" title="Come spostare un sito SharePoint nella stessa site collection" target="_blank"&gt;precedenti post&lt;/a&gt; e che ringrazio tanto per avermi dato anche una prova live di quanto aveva già scritto. 
&lt;br /&gt;Si parlava di come spostare un sito all'interno della medesima site colleciton SharePoint utilizzando l'utility a riga di comando STSADM o il modello ad oggetti di SharePoint stesso. Nel mio precedente post, avevo scritto in maniera un pò imprecisa l'operazione di "reparent" che può essere applicata ad un sito per permetterne lo spostamento in un'altra locazione della stessa site collection.
&lt;br /&gt;L'esempio che avevo scritto io era:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; oldUrl = &lt;span style="color: #A31515"&gt;"http://servername/DaSpostare/"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; newUrl = &lt;span style="color: #A31515"&gt;"Peppe/Spostato"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(oldUrl))
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
&lt;br /&gt;{
&lt;br /&gt;  web.ServerRelativeUrl = newUrl;
&lt;br /&gt;  web.Update();
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Io l'avevo provato ed ero sicurissimo di quello che avevo scritto (per fortuna :), ma non avevo precisato una cosa.
&lt;br /&gt;Se provassimo, per esempio, a spostare un sito dall'indirizzo:
&lt;br /&gt;
&lt;br /&gt;http://servername/Padre/Figlio
&lt;br /&gt;
&lt;br /&gt;all'indirizzo:
&lt;br /&gt;
&lt;br /&gt;http://servername/Figlio
&lt;br /&gt;
&lt;br /&gt;Il codice sopra, pur non sollevando nessuna eccezione, non avrebbe eseguito alcuna operazione di "reparent" sul nostro sito, come invece noi ci aspettiamo.
&lt;br /&gt;Questo perchè il nuovo indirizzo deve essere "server-relative", quindi se volessi spostare un sito e metterlo direttamente sotto la root della site collection devo specificare lo "/" prima del nuovo indirizzo, altrimenti, specificando un nome senza percorso relativo, l'operazione di "reparent" viene fatta a partire dal sito corrente in giu.
&lt;br /&gt;Nell'esempio infatti, il sito "Figlio" viene spostato sempre sotto il sito "Padre" e NON sotto la root.
&lt;br /&gt;Per spostarlo sotto la root della nostra site collection, avrei dovuto scrivere:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; oldUrl = &lt;span style="color: #A31515"&gt;"http://servername/Padre/Figlio/"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; newUrl = &lt;span style="color: #A31515"&gt;"/Figlio"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(oldUrl))
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
&lt;br /&gt;{
&lt;br /&gt;  web.ServerRelativeUrl = newUrl;
&lt;br /&gt;  web.Update();
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questa precisazione è davvero importante innanzitutto perchè di permette di capire come effettivamente funziona l'operazione di "recap" di SharePoint e poi perchè ci fa saltare all'occhio che questo è l'unico modo che abbiamo per spostare un sito da una qualsiasi locazione alla root di site collection, in quanto l'utlity STSADM invece non implementa la funzionalità di spostare un sito direttamente sotto la root della site collection.
&lt;br /&gt;
&lt;br /&gt;Per fortuna ogni tanto c'è qualcuno che mi legge e mi corregge ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/STSADM.aspx" title="TAG: STSADM"&gt;STSADM&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToMoveSharePointSiteProgrammatically.aspx" /><issued>2011-3-27T19:50:43+01:00</issued><modified>2011-3-27T19:50:43+01:00</modified></entry><entry><title>Microsoft Technical Conferences 2011: agenda in continuo aggiornamento !</title><id>/Blog/UpdatedAgendaMicrosoftTechnicalConferences2011.aspx</id><created>2011-3-24T13:25:22+01:00</created><content type="text/html" mode="escaped">&lt;a title="Iscriviti alle Microsoft Technical Conferences 2011" href="http://www.mstechnicalconferences.it/" target="_blank"&gt;&lt;img style="margin: 10px; float: right;" alt="Iscriviti alle Microsoft Technical Conferences 2011" src="http://www.peppedotnet.it/Images/spoc-medium-rect_300x250.png"&gt;&lt;/a&gt;Come potete vedere direttamente dal &lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx" title="Microsoft Technical Conferences 2011" target="_blank"&gt;sito delle conferenze&lt;/a&gt;, l'agenda è in continuo aggiornamento ! Sono state aggiunte tante nuove sessioni, veramente interessanti che non potetevi perdervi.
&lt;br /&gt;Queste alcune delle novità:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#ALL201" title="Introduzione a SharePoint" target="_blank"&gt;Introduzione a SharePoint&lt;/a&gt; - Igor Macori e Paolo Pialorsi&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#SQL201" title="Using SQL Azure" target="_blank"&gt;Using SQL Azure&lt;/a&gt; - Roberto Brunetti&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#BI207" title="Cubi per tutti: Analysis Services senza wizard" target="_blank"&gt;Cubi per tutti: Analysis Services senza wizard&lt;/a&gt; - Francesco De Chirico&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#OFF201" title="Soluioni di Office Automation con SharePoint" target="_blank"&gt;Soluzioni di Office Automation con SharePoint&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#BI205" title="Common issue in Data Warehousing" target="_blank"&gt;Common issue in Data Warehousing&lt;/a&gt; - Alessandro Rezzani&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#ONL303" title="Scenari di integrazione tra SharePoint e Windows Azure" target="_blank"&gt;Scenari di integrazione tra SharePoint e Windows Azure&lt;/a&gt; - Fabio Santini e Massimo A. Santin&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#ALL202" title="Introduzione a Powershell" target="_blank"&gt;Introduzione a Powershell&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#SQL203" title="Understanding XQuery" target="_blank"&gt;Understanding XQuery&lt;/a&gt; - Dejan Sarka&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx?#SB323" title="Web development basics for SharePoint" target="_blank"&gt;Web development basics for SharePoint&lt;/a&gt; - Fabio Franzini&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;E questo è niente !! Controllate pure l'&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx" title="Microsoft Technical Conferences 2011" target="_blank"&gt;agenda&lt;/a&gt;..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/UpdatedAgendaMicrosoftTechnicalConferences2011.aspx" /><issued>2011-3-24T13:25:22+01:00</issued><modified>2011-3-24T13:25:22+01:00</modified></entry><entry><title>Scrivere query CAML per filtrare campi di tipo Lookup</title><id>/Blog/SharePoint2010CAMLQueriesToFilterLookupFields.aspx</id><created>2011-3-22T11:44:15+01:00</created><content type="text/html" mode="escaped">I campi lookup sono sicuramente tra i campi più utilizzati in SharePoint sin dalle prime versioni. Utilizzando il modello ad oggetti (server-side o client-side), ci può capitare di voler scrivere una query CAML che si preoccupi di filtrare le informazioni presenti su una particolare lista in base al valore di un campo di tipo Lookup.
&lt;br /&gt;Normalmente il primo filtro che ci può venire in mente di fare (o almeno.. a me è successo così :) è quello sul valore testuale del campo. Ecco quindi che per filtrare gli elementi di una lista, in base al valore di uno dei suoi campi di tipo Lookup, possiamo scrivere la seguente query CAML:
&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;Query&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;Where&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;Eq&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;FieldRef&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="VOSTROCAMPOLOOKUP"&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;Value&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Type&lt;span style='color:#0000FF'&gt;="Lookup"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;PEPPE&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Value&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;Eq&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;Where&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;Query&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;E fin qua tutto bene..
&lt;br /&gt;Se ci pensate bene però, può anche capitare di avere dei valori doppi nella lista di lookup, mentre invece voi volete filtrare in base ad un valore ben preciso della vostra lista di lookup. Proprio per ovviare a questo problema, dobbiamo sapere che possiamo effettuare un filtro basandoci sul valore dell'ID del nostro campo di tipo Lookup.
&lt;br /&gt;Ecco come:
&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;Query&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;Where&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;Eq&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;FieldRef&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="VOSTROCAMPOLOOKUP"&lt;/span&gt; LookupId&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;Value&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Type&lt;span style='color:#0000FF'&gt;="Lookup"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;1&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Value&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;Eq&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;Where&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;Query&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo caso ho filtrato gli elementi della mia ipotetica lista SharePoint in base al valore di lookup con ID = 1.
&lt;br /&gt;Vi assicuro che può essere veramente utile.
&lt;br /&gt;
&lt;br /&gt;Se volete conoscere altri di questi "trucchi", ci vediamo alla mia sessione &lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx#DEV304" title="SharePoint Development Basics &amp; Best Practices" target="_blank"&gt;"SharePoint Development Basics &amp; Best Practices"&lt;/a&gt; alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2011" target="_blank"&gt;Microsoft SharePoint Conference 2011&lt;/a&gt; il 19 Aprile 2011 alle 9.30 in sala B !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CAML.aspx" title="TAG: CAML"&gt;CAML&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010CAMLQueriesToFilterLookupFields.aspx" /><issued>2011-3-22T11:44:15+01:00</issued><modified>2011-3-22T11:44:15+01:00</modified></entry><entry><title>Microsoft Office 365</title><id>/Blog/Office365Intro.aspx</id><created>2011-3-21T9:7:41+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://office365.microsoft.com" title="Microsoft Office 365" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/office365.jpg" alt="Microsoft Office 365" style="float: right; margin: 10px;" /&gt;&lt;/a&gt;Avrete sicuramente sentito parlare di Office 365, o almeno ne avrete letto il nome nei blog o in qualche sito Microsoft. Molto spesso lo si presenta come la nuova versione di BPOS (Business Productivity Online Suite) o come la versione on-line dei programmi del pacchetto Office.
&lt;br /&gt;Sicuramente è tutto quanto ciò che avete sentito dire, anche se c'è da fare un pò di chiarezza.
&lt;br /&gt;Quindi, proprio per esser chiari, Office 365 rappresenta la nuova offerta flessibile da parte di Microsoft per la collaborazione e il supporto ai processi aziendali in ambiente distribuito. Così dicendo, non stiamo parlando solamente del pacchetto Office, ma di tutti quei software che usiamo quotidianamente e che ci aiutano a svolgere le nostre attività lavorative assieme con i nostri colleghi o i nostri clienti, offerti però in modalità "Software as a Serivce" (SaaS).
&lt;br /&gt;Office 365 infatti, è una vera e propria piattaforma distribuita a cui possiamo accedere tramite abbonamento e che ci da la possibilità di utilizzare una particolare versione di Office direttamente dal vostro browser, un server di posta Exchange in cui configurare varie cassette postali, una o più site collection SharePoint per condividere documenti e processi aziendali e l'utilizzo di Lync, la nuova versione di Office Comunicator per comunicare on-line con colleghi e clienti. 
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/Office365Includes.png" alt="Microsoft Office 365" /&gt; 
&lt;br /&gt;
&lt;br /&gt;Una soluzione completa quindi, totalmente ospitata presso i datacenter Microsoft. In tutto ciò Microsoft, da parte sua, si preoccupa sia della parte implementativa che della gestione, garantendo la disponibilità dei servizi del 99.9% e sgravandoci dei costi dovuti a queste operazioni e a quelli relativi all'acquisto di materiale hardware.
&lt;br /&gt;Attraverso un unico pannello di amministrazione poi, saremo in grado di acquistare uno o più dei pacchetti descritti prima (secondo il modello "pay-as-you-go"), di gestirne le varie configurazioni, di aggiungere nuovi account utente e applicare regole di sicurezza sia  per quanto riguarda gli accessi che per l’utilizzo o meno di certe funzionalità.
&lt;br /&gt;Attualmente Office 365 è in versione beta, ma possiamo già conoscere i suoi punti di forza:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Massima produttività – possiamo infatti lavorare in team in maniera efficace e sfruttare al massimo tutto l'ambiente di collaborazione che ci viene offerto.&lt;/li&gt;&lt;li&gt;Accesso globale – possiamo raggiungere i nostri contenuti da qualsiasi locazione e utilizzando qualsiasi dispositivo, dal vostro pc in ufficio o a casa, al vostro smartphone.
&lt;br /&gt;- Abbiamo accesso ai servizi sia on-line che off-line grazie agli applicativi Office, sia su MAC che su PC.
&lt;br /&gt;- Possiamo visualizzare e modificare documenti utilizzando le Office Web Apps e sfruttando un'ampia gamma di browser supportati (Internet Explorer, Firefox, Chrome, Safari, ecc ...).
&lt;br /&gt;- Abbiamo accesso alla nostra inbox, ai contatti e al calendario sia dal browser che da centinaia di dispositivi tra cui Iphone, BlackBerry, Windows Phone e Nokia.
&lt;br /&gt;- Possiamo connetterci in sicurezza attraverso internet sfruttando il protocollo HTTPS senza la necessità di avere una VPN installata.&lt;/li&gt;&lt;li&gt;Lavorare con software già conosciuti – possiamo infatti sfruttare tutto il know-how che abbiamo acquisito fin’ora con le versioni "on-premise" dei programmi del pacchetto Office, di SharePoint, Exchange e Office Communicator, per utilizzare le stesse versioni on-line.&lt;/li&gt;&lt;li&gt;Alta affidabilità e sicurezza – Microsoft vi da disponibilità dei servizi al 99,9% garantita e si preoccupa di fornirvi la corretta applicazione della security sui vostri contenuti.&lt;/li&gt;&lt;li&gt;Efficenza e controllo delle risorse IT – Abbiamo controllo totale sugli account e le configurazioni di tutto quanto.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Ad oggi c'è una beta  a cui è possibile accedere su richiesta, si conoscono già molte specifiche tecniche, funzionalità e alcuni dei prezzi o dei pacchetti offerti. Vi avviso che non sono ancora definitivi, ma potete dargli già un'occhiata visitando il sito:
&lt;br /&gt;- &lt;a href="http://office365.microsoft.com" title="Microsoft Office 365" target="_blank"&gt;http://office365.microsoft.com&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete però un'introduzione completa sia alla piattaforma Office 365 che alla parte relativa a SharePoint Online, iscrivetevi alla &lt;a href="http://www.sharepointconference.it" title="Microsoft SharePoint &amp; Office Conference 2011" target="_blank"&gt;Microsoft SharePoint &amp; Office Conference 2011&lt;/a&gt; che si terrà il 19,20 e 21 Aprile 2011 a Milano. In questa occasione, Antonio Gazzeri ci introdurrà i due argomenti in due distinte sessioni:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Introduzione a Microsoft Office 365 (19 Aprile alle 11.15 – Sala A)&lt;/b&gt;
&lt;br /&gt;Microsoft Office 365 è la nuova generazione di servizi online che comprende Microsoft Office, SharePoint Online, Exchange Online e Lync Online nella loro versione cloud, cioé offerti in modalità "Software as a Service" (SaaS) ad aziende di ogni dimensione. Questa sessione introduce Office 365 a 360° :-), toccando aspetti legati alle funzionalità disponibili, alla gestione delle identità e del single-sign-on, e ai percorsi di migrazione, il tutto con un mix ricco di demo sull'ambiente beta per rendere più concreti gli argomenti trattati.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Introduzione a SharePoint Online (19 Aprile alle 14.00 – Sala A)&lt;/b&gt;
&lt;br /&gt;SharePoint Online è SharePoint offerto in modalità "Software as a Services" (SaaS) da Microsoft ad aziende di tutte le dimensioni. Questa sessione introduce le caratteristiche del servizio SharePoint Online, nell'ambito della più ampia suite di soluzioni di Microsoft Online che comprende anche servizi di posta elettronica, di comunicazione ed altri. Dopo una breve carrellata sulle opzioni di servizio disponibili e in arrivo, ci concentreremo sulla nuova versione di SharePoint Online – attualmente in beta – inclusa nella suite Office 365. Analizzeremo le funzionalità disponibili, gli approcci per la personalizzazione e gli aspetti legati all'amministrazione del servizio, il tutto con un mix ricco di demo sull'ambiente beta per rendere più concreti gli argomenti trattati.
&lt;br /&gt;
&lt;br /&gt;&lt;a title="Microsoft Technical Conferences" href="http://www.technicalconferences.it/default.aspx" target="_blank"&gt;&lt;img alt="Microsoft Technical Conferences" src="/Images/banner_Leaderboard-10.png"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A breve poi, vedremo in dettaglio che cosa offre la versione on-line di SharePoint 2010.. che a noi è questo che interessa! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 365.aspx" title="TAG: Office 365"&gt;Office 365&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Online.aspx" title="TAG: SharePoint Online"&gt;SharePoint Online&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Office365Intro.aspx" /><issued>2011-3-21T9:7:41+01:00</issued><modified>2011-3-21T9:7:41+01:00</modified></entry><entry><title>Le mie sessioni alla Microsoft SharePoint Conference 2011</title><id>/Blog/MySessionsAtMicrosoftSharePointConference2011.aspx</id><created>2011-3-17T12:29:32+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://www.mstechnicalconferences.it/" title="Iscriviti alle Microsoft Technical Conferences 2011" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/spoc-medium-rect_300x250.png" alt="Iscriviti alle Microsoft Technical Conferences 2011" style="float: right; margin: 10px" /&gt;&lt;/a&gt;L'&lt;a href="http://www.sharepointconference.it/events/2011/agenda.aspx" title="Agenda Microsoft Technical Conferences 2011" target="_blank"&gt;agenda&lt;/a&gt; sta quasi per essere conclusa, la macchina organizzativa è partita da un bel pezzo, sono già finiti i vari periodi di sconti e agevolazioni, appaiono i primi sponsor.. ci siamo quasi !
&lt;br /&gt;Manca un mese all'evento dell'anno, le &lt;a href="http://www.mstechnicalconferences.it/" title="Microsoft Technical Conferences" target="_blank"&gt;Microsoft Technical Conferences&lt;/a&gt;. Tre giorni (19, 20 e 21 Aprile 2011)  di formazione tecnica ad alto livello, tenuti da oltre 60 degli speaker più famosi del mondo IT sulle tecnologie Microsoft del momento. In un'unica location (MIC - Fiera Milano Congressi), le tre più importanti conferenze tecniche sulle soluzioni Microsoft in Italia:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/" title="Microsoft Office &amp; SharePoint Conference 2011" target="_blank"&gt;Microsoft Office &amp; SharePoint Conference 2011&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlconference.it/" title="Microsoft SQL Server &amp; BI Conference 2011" target="_blank"&gt;Microsoft SQL Server &amp; BI Conference 2011&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ucconference.it/" title="Microsoft Unified Communication &amp; Collaboration Conference 2011" target="_blank"&gt;Microsoft Unified Communication &amp; Collaboration Conference 2011&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Io sarò speaker per la parte SharePoint e terrò 3 sessioni. Eccole nel dettaglio:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;SharePoint Development Basics &amp; Best Practices (Sala B - 9.30 del 19 Aprile 2011)&lt;/b&gt;
&lt;br /&gt;Sviluppare applicazioni per SharePoint 2010 prevede un certo numero di conoscenze di base, partendo dai concetti logici di sito e lista fino ad arrivare alla programmazione vera e propria tramite uno dei modelli ad oggetti esposti. In questa sessione impareremo a programmare SharePoint 2010 e impareremo a farlo seguendo le principali linee guida. Vedremo che cos'è una web part e come implementarla, che cosa significa sviluppare una pagina, che cosa sono le feature e le soluzioni; vedremo come far proprio il modello ad oggetti server-side e i concetti di accesso ai dati, provisioning di strutture e di gestione e personalizzazione degli eventi scatenati da SharePoint stesso. Il tutto imparando ad utilizzare le principali best practices fornite da Microsoft.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Silverlight 4 and SharePoint 2010 get married ! (Sala B - 14.00 del 19 Aprile 2011&lt;/b&gt;
&lt;br /&gt;Una sessione con tanto codice per imparare a creare interfacce e applicazioni utili, facili da usare e con una grande user experience, attraverso lo sviluppo di Rich Internet Application in grado di integrarsi con le informazioni presenti all’interno di SharePoint 2010.
&lt;br /&gt;Insomma... un matrimonio perfetto tra la piattaforma di collaborazione Microsoft e l’ultima versione di Silverlight.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Il Client Object Model di SharePoint 2010 (Sala B - 11.15 del 20 Aprile 2011)&lt;/b&gt;
&lt;br /&gt;Il Client Object Model di SharePoint 2010 SharePoint Foundation 2010 ha introdotto una serie di nuovi modelli ad oggetti che permettono agli sviluppatori di scrivere applicazioni che accedono ai dati di SharePoint sia da applicazioni .NET che risiedono client-side, sia da applicazioni Silverlight, che tramite codice Javascript eseguito lato client all'interno del browser. Tramite questo nuovo modello di programmazione infatti, siamo in grado di scrivere codice senza dover installare niente sul server SharePoint, senza dover richiamare dei web services e mantenendo nelle nostre applicazioni il paradigma di programmazione ad oggetti. Questa sessione introduce il modello di sviluppo client-side di SharePoint 2010 e, attraverso tanti esempi pratici, si vedrà in dettaglio come sfruttarlo al meglio per le nostre esigenze.
&lt;br /&gt;
&lt;br /&gt;Mi raccomando, &lt;a href="http://www.sharepointconference.it/events/2011/register.aspx" title="Iscriviti alle Microsoft Technical Conferences 2011" target="_blank"&gt;iscrivetevi&lt;/a&gt; e non fatevi sfuggire quest'evento.. che se ne vedranno delle belle! 
&lt;br /&gt;E sopratutto, se venite.. non siate timidi e fatevi riconoscere, che ci fa solo piacere ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MySessionsAtMicrosoftSharePointConference2011.aspx" /><issued>2011-3-17T12:29:32+01:00</issued><modified>2011-3-17T12:29:32+01:00</modified></entry><entry><title>Il controllo FileUpload non &#232; disponibile all'interno di soluzioni sandbox di SharePoint 2010</title><id>/Blog/FileUploadNotAvailableOnSandboxSolutions.aspx</id><created>2011-3-15T18:15:15+01:00</created><content type="text/html" mode="escaped">Se avete intenzione di scrivere una web part che utilizza o il controllo FileUpload o il controllo HtmlInputFile e di effettuarne il deploy tramite una Sandbox Solution sappiate che vi troverete di fronte ad una bella sorpresa.
&lt;br /&gt;In pratica, a casa dei limiti di sicurezza che ha il processo in cui girano le soluzioni deployate come "sandbox" (il processo "User Code"), non è possibile accedere al contesto HTTP corrente e quindi recuperare il file che l'utente ha intenzione di postare. Infatti, come potete vedere in figura, il contenuto della proprietà PostedFile della classe FileUpload è nullo.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/FileUploadErrorOnSandboxSolutions.jpg" alt="Il controllo FileUpload non è disponibile all'interno di soluzioni sandbox di SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se lo stesso codice lo spostate in una Farm Solution, vedrete che il meccanismo di upload proprio del controllo ASP.NET in questione, funzionerà senza alcun problema.
&lt;br /&gt;Purtroppo non c'è soluzione a questo limite, a meno di utilizzare javascript e fare l'upload di file attraverso il modello ad oggetti client-side.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Sandbox Solution.aspx" title="TAG: Sandbox Solution"&gt;Sandbox Solution&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/FileUploadNotAvailableOnSandboxSolutions.aspx" /><issued>2011-3-15T18:15:15+01:00</issued><modified>2011-3-15T18:15:15+01:00</modified></entry><entry><title>Errore &quot;This site is not assigned to an index&quot; in SharePoint Foundation 2010</title><id>/Blog/ThisSiteIsNotAssignedToIndexer.aspx</id><created>2011-3-10T17:10:30+01:00</created><content type="text/html" mode="escaped">Se provate a fare una nuova ricerca su uno dei vostri siti SharePoint Foundation 2010 e vi viene stampato a video questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Your search cannot be completed because this site is not assigned to an indexer&lt;/div&gt;
&lt;br /&gt;Sappiate che dovete:
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Scegliere un utente con i corretti privilegi sia sul file system che sul database dei contenuti&lt;/li&gt;&lt;li&gt;Avviare il servizio di ricerca di SharePoint (scegliendo l'opzione "Services on server" dalla home page della central administration)&lt;/li&gt;&lt;li&gt;Scegliere poi l'opzione "Manage content databases" (sempre dalla home della Central Administration)
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/indexErrorSPFoundation2010_1.jpg" alt="Errore This site is not assigned to an index in SharePoint Foundation 2010" /&gt;&lt;/li&gt;&lt;li&gt;Selezionare il vostro content database e scegliere poi il server di indicizzazione
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/indexErrorSPFoundation2010_2.jpg" alt="Errore This site is not assigned to an index in SharePoint Foundation 2010" /&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, dovete solo aspettare che finisca l'indicizzazione.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Search.aspx" title="TAG: Search"&gt;Search&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ThisSiteIsNotAssignedToIndexer.aspx" /><issued>2011-3-10T17:10:30+01:00</issued><modified>2011-3-10T17:10:30+01:00</modified></entry><entry><title>Slide e demo della mia sessione su SharePoint 2010 e Azure</title><id>/Blog/SlideAndDemosOfSharePoint2010AndAzureSession.aspx</id><created>2011-3-8T11:35:24+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;&lt;IMG style="MARGIN: 5px; FLOAT: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;&lt;/a&gt;Come vi dicevo, ieri c'è stato l'evento su Windows Azure organizzato dai ragazzi di DotNetLombardia ed è stata una bella giornata.
&lt;br /&gt;Vi lascio qua le slide e le demo che ho utilizzato per la mia sessione su come integrare SharePoint 2010 con Windows Azure.
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/zip/Integrating SharePoint with Azure.pdf" title="Slide in pdf" target="_blank"&gt;Slide in formato PDF (820 kb)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.AzureDay.zip" title="Demo" target="_blank"&gt;Demo (6.6 mb)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Vi ricordo inoltre che se volete più informazioni su Windows Azure, potete far riferimento ai blog di &lt;a href="http://blogs.msdn.com/b/mariofontana/" title="Mario Fontana" target="_blank"&gt;Mario&lt;/a&gt;, &lt;a href="http://dotnetlombardia.org/b/rob/default.aspx" title="Roberto Freato" target="_blank"&gt;Roberto&lt;/a&gt; (che sta scrivendo una &lt;a href="http://dotnetlombardia.org/b/rob/archive/tags/windows+azure+training/default.aspx" title="Articoli su Windows Azure" target="_blank"&gt;serie di articoli&lt;/a&gt; proprio su Windows Azure) e &lt;a href="http://dotnetside.org/blogs/fabio/" title="Fabio Cozzolino" target="_blank"&gt;Fabio&lt;/a&gt; (il cui libro su Windows Azure sarà presto in libreria).
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Azure.aspx" title="TAG: Azure"&gt;Azure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SlideAndDemosOfSharePoint2010AndAzureSession.aspx" /><issued>2011-3-8T11:35:24+01:00</issued><modified>2011-3-8T11:35:24+01:00</modified></entry><entry><title>Integrare i dati di SQL Azure all'interno di SharePoint 2010</title><id>/Blog/SqlAzureAndSharePoint2010WithBCSPart3.aspx</id><created>2011-3-8T11:14:12+01:00</created><content type="text/html" mode="escaped">&lt;img style="MARGIN: 5px; FLOAT: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;Fresco dall'&lt;a href="http://azureday01.dotnetlombardia.org/" title="Windows Azure Day" target="_blank"&gt;Azure Day&lt;/a&gt;, svolto ieri in Microsoft e organizzato da &lt;a href="http://www.dotnetlombardia.org/" title="DotNetLombardia" target="_blank"&gt;DotNetLombardia&lt;/a&gt;, vi scrivo per avvisarvi che è stata pubblicata la terza parte del mio articolo riguardo l'integrazione tra SharePoint 2010 e SQL Azure all'interno di &lt;a href="http://www.sharepointcommunity.it/" title="SharePointCommunity.it" target="_blank"&gt;SharePoint Community&lt;/a&gt;.
&lt;br /&gt;In questa terza parte potrete vedere come configurare un external content type, utilizzando SharePoint Designer 2010, in modo da definire la struttura delle informazioni esterne presenti all'interno di SQL Azure e gestirle tramite le interfacce di default di SharePoint 2010.
&lt;br /&gt;L'insieme dei 3 articoli, che vi riporto qui sotto, è stata anche una delle demo che ho fatto vedere ai partecipanti dell'evento di ieri e vi assicuro che è una cosa veramente molto utile.
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 1" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=25" target=_blank&gt;Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 2" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=26" target=_blank&gt;Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 3" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=27" target=_blank&gt;Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 3&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Spero vi sia piaciuta questa mini-serie di articoli.
&lt;br /&gt;Poi, se volete avere maggiori informazioni più dettagliate riguardo SharePoint 2010, i BCS e l'integrazione con Windows Azure, vi ricordo che potete ancora iscrivervi alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2011" target="_blank"&gt;SharePoint Conference 2011&lt;/a&gt; che si terrà a Milano (Assago) il 19,20 e 21 Aprile 2011.
&lt;br /&gt;
&lt;br /&gt;&lt;a title="Microsoft Technical Conferences" href="http://www.technicalconferences.it/default.aspx" target="_blank"&gt;&lt;img alt="Microsoft Technical Conferences" src="/Images/banner_Leaderboard-10.png"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Azure.aspx" title="TAG: Azure"&gt;Azure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SQL Azure.aspx" title="TAG: SQL Azure"&gt;SQL Azure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SqlAzureAndSharePoint2010WithBCSPart3.aspx" /><issued>2011-3-8T11:14:12+01:00</issued><modified>2011-3-8T11:14:12+01:00</modified></entry><entry><title>Come cancellare content types &quot;orfani&quot; da una site collection SharePoint</title><id>/Blog/HowToDeleteSharePoint2010OrphanContentTypes.aspx</id><created>2011-3-4T14:38:38+01:00</created><content type="text/html" mode="escaped">Se lavorate con i content type all'interno delle vostre soluzioni di provisioning su SharePoint, vi sarà capitato di non riuscire più a cancellare un content type rimasto "orfano" dalle tante operazioni di deployment e retract che avrete fatto durante la fase di sviluppo e test.
&lt;br /&gt;Ho usato il termine "orfano" poichè normalmente è corretto che SharePoint ci vieti di cancellare un content type (dai site settings del nostro sito) se questo è ancora in uso, ma molto spesso può capitare che l'operazione di cancellazione venga comunque vietata anche se siete sicuri al 100% che il vostro content type non è più in uso su nessuna lista o document library (per essere sicuri, fate riferimento a &lt;a href="http://blog.thekid.me.uk/archive/2008/11/03/a-tip-when-looking-at-the-sharepoint-content-db.aspx" title="Come controllare che il vostro content type non sia più utilizzato" target="_blank"&gt;questo post&lt;/a&gt;).
&lt;br /&gt;Nello specifico, il messaggio d'errore che viene visualizzato dall'interfaccia o all'interno del log di SharePoint è il seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The content type "NOME DEL VOSTRO CONTENT TYPE" is part of an application feature.   at Microsoft.SharePoint.SPContentTypeCollection.DeleteFromWeb(SPContentTypeId id, String strName) 
&lt;br /&gt;   at Microsoft.SharePoint.SPContentTypeCollection.Delete(SPContentTypeId id) 
&lt;br /&gt;   at Microsoft.SharePoint.SPContentType.Delete() 
&lt;br /&gt;   at Microsoft.SharePoint.ApplicationPages.ManageContentTypePage.DeleteContentType() 
&lt;br /&gt;   at Microsoft.SharePoint.ApplicationPages.ManageContentTypePage.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
&lt;br /&gt;   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
&lt;br /&gt;   at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
&lt;br /&gt;   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)&lt;/div&gt;
&lt;br /&gt;Per prima cosa dobbiamo controllare se sono presenti all'interno del recycle bin una o più liste che utilizzavano il content type in questione e che magari abbiamo deciso di cancellare. Quindi, svuotiamo il cestino di SharePoint da queste liste e proviamo ad eliminare di nuovo il content type.
&lt;br /&gt;
&lt;br /&gt;Se ci viene ritornato ancora l'errore descritto sopra, possiamo considerare il content type come "orfano" e possiamo procedere alla sua cancellazione. Per compiere questa operazione bisogna sporcarsi un pò le mani e modificare direttamente il database dei contenuti della vostra web application SharePoint.
&lt;br /&gt;&lt;div style="margin: 7px; margin-left: 10px"&gt;So bene che vi consiglio sempre di NON modificare a mano il database di SharePoint ed utilizzare il modello ad oggetti, ma purtroppo in questo caso è proprio necessario, perchè non esiste altro modo di poter cancellare il content type da cui scaturisce l'errore, ne utilizzando SharePoint Designer ne uno dei modelli ad oggetti disponibili (server, client o web services).&lt;/div&gt;
&lt;br /&gt;Apriamo quindi SQL Management Studio, selezioniamo il database di contenuto relativo alla web application in cui abbiamo riscontrato l'errore e scegliamo di effettuare una nuova query. Questa serve per controllare la presenza effettiva del nostro content type, tramite il suo identificativo.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SELECT *  FROM [NOME DATABASE].[dbo].[ContentTypes] 
&lt;br /&gt;WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE 'VOSTRO CONTENT TYPE ID%')&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così facendo riuscirete a recuperare la riga corrispondente alla definizione del vostro content type. Da notare è il campo IsFromFeature, che sarà sicuramente valorizzato a "1".
&lt;br /&gt;
&lt;br /&gt;Per risolvere quindi il problema originale di cancellazione del content type, basta settare il valore di quel campo a "0" tramite una normalissima query di update.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Update [NOME DATABASE].[dbo].[ContentTypes] 
&lt;br /&gt;SET [IsFromFeature] = 0 
&lt;br /&gt;WHERE (sys.fn_varbintohexstr(ContentTypeId) LIKE 'VOSTRO CONTENT TYPE ID%')&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Fatto questo update, sarete così in grando di cancellare il content type orfano.
&lt;br /&gt;
&lt;br /&gt;MI RACCOMANDO, utilizzate questa tecnica solo se siete sicuri al 100% che il vostro content type non ha più alcuna referenza su nessuna lista all'intenro della vostra site collection (per fare questo controllo, fate sempre riferimento a &lt;a href="http://blog.thekid.me.uk/archive/2008/11/03/a-tip-when-looking-at-the-sharepoint-content-db.aspx" title="Come controllare che il vostro content type non sia più utilizzato" target="_blank"&gt;questo post&lt;/a&gt;).
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content type.aspx" title="TAG: Content type"&gt;Content type&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDeleteSharePoint2010OrphanContentTypes.aspx" /><issued>2011-3-4T14:38:38+01:00</issued><modified>2011-3-4T14:38:38+01:00</modified></entry><entry><title>Come esportare la definizione di una web part in SharePoint 2010</title><id>/Blog/HowToExportWebPartInSharePoint2010.aspx</id><created>2011-3-3T11:38:41+01:00</created><content type="text/html" mode="escaped">Mi sono accorto di questa cosa un pò di tempo fa, mentre stavo cercando di mettere in piedi una site definition in SharePoint 2010. Il mio intento era quello di far apparire nella home del nuovo sito creato a partire dal template che stavo appunto definendo, un pò di web part (sia di default di SharePoint che custom); per farlo, avevo bisogno dell'XML che definisce la web part in se.
&lt;br /&gt;Utilizzando WSS 3.0/MOSS 2007 (la vecchia versione di SharePoint per intenderci) potevo recuperare la struttura di definizione delle web part che volevo inserire all'interno della home della mia site definition, selezionando il menu contestuale della web part e scegliendo l'opzione "Export", così da poter scaricare l'XML di definizione della web part ed utilizzarlo all'interno della mia site definition.
&lt;br /&gt;Vado per fare la stessa operazione su una Silverlight Web Part posizionata in uno dei miei siti SharePoint 2010 e, sopresa delle sorprese, non trovo più quell'opzione che era davvero tanto comoda (vedi immagine).
&lt;br /&gt;E' vero che posso recuperare quell'XML di definizione in tanti modi, ma farlo direttamente dalla UI di SharePoint è sicuramente molto più immediato.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/exportWebPart1.jpg" alt="Come esportare la definizione di una web part in SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;C'è un modo però per far riapparire quell'opzione. Se scegliamo di modificare le proprietà della web part e espandiamo il gruppo "Advanced", troviamo la proprietà "Export Mode" settata a "Do not allow".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/exportWebPart2.jpg" alt="Come esportare la definizione di una web part in SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Valorizzando questa proprietà con uno dei due altri valori disponibili riusciamo a vedere l'opzione di export nella nostra web part e recuperarne il file di definizione.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/exportWebPart3.jpg" alt="Come esportare la definizione di una web part in SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Praticamente l'hanno solo nascosto, per fortuna !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToExportWebPartInSharePoint2010.aspx" /><issued>2011-3-3T11:38:41+01:00</issued><modified>2011-3-3T11:38:41+01:00</modified></entry><entry><title>Guest post sul blog di MSDN Italia: SharePoint 2010 e Azure</title><id>/Blog/MSDNItalyGuesPostSharePointAzure.aspx</id><created>2011-2-28T22:14:3+01:00</created><content type="text/html" mode="escaped">&lt;img style="float: right; margin-left: 10px" alt="Windows Azure Day" src="http://www.peppedotnet.it/Images/azureDay.png" /&gt;Direttamente dal blog del team di &lt;a href="http://blogs.msdn.com/b/italy/" title="MSDN Italia" target="_blank"&gt;MSDN Italia&lt;/a&gt;, è stato pubblicato un mio "guest post" riguardante l'integrazione tra SharePoint 2010 e la piattaforma Windows Azure.
&lt;br /&gt;Ecco qua il link diretto:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://blogs.msdn.com/b/italy/archive/2011/02/27/guest-post-integrazione-tra-sharepoint-2010-e-windows-azure.aspx" title="Guest post: Integrazione tra SharePoint 2010 e Windows Azure" target="_blank"&gt;Guest post: Integrazione tra SharePoint 2010 e Windows Azure&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' più che altro un'introduzione di quello che potete già leggere su &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; o di quello che potrete vedere e sentire all'&lt;a href="" title="Windows Azure Day" target="_blank"&gt;Azure Day&lt;/a&gt;, il 7 marzo 2011 presso la sede di Microsoft a Segrete (Milano) con me e i ragazzi di DotNetLombardia.
&lt;br /&gt;Un grazie a &lt;a href="http://blogs.msdn.com/b/pietrobr/" title="Pietro Brambati" target="_blank"&gt;Pietro&lt;/a&gt; per la pubblicazione !
&lt;br /&gt;
&lt;br /&gt;Buona lettura ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Azure.aspx" title="TAG: Azure"&gt;Azure&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MSDNItalyGuesPostSharePointAzure.aspx" /><issued>2011-2-28T22:14:3+01:00</issued><modified>2011-2-28T22:14:3+01:00</modified></entry><entry><title>Integrare i dati di SQL Azure all'interno di SharePoint 2010</title><id>/Blog/SqlAzureAndSharePoint2010WithBCS.aspx</id><created>2011-2-25T18:26:6+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;Ho interrotto un pò la serie di articoli sul &lt;a href="/Tags/Client%20Object%20Model.aspx" title="Client Object Model" target="_blank"&gt;Client Object Model&lt;/a&gt; all'interno di &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; per parlare un pò di Azure e SharePoint 2010.
&lt;br /&gt;Oggi, infatti, è stata pubblicata la prima parte (1 di 3) di un tutorial per imparare ad utilizzare i Business Connectivity Services in modo da integrare i dati salvati all'interno di SQL Azure con le interfacce di default di SharePoint 2010, così da permetterne la gestione tramite le normali operazioni CRUD e il loro utilizzo all'interno di programmi del pacchetto Office (attraverso il runtime lato client proprio dei BCS).
&lt;br /&gt;Ecco l'indirizzo di questa prima parte del tutorial:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=25" title="Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 1" target="_blank"&gt;Integrare i dati di SQL Azure all'interno di SharePoint 2010 - Parte 1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Questa è una delle possibili integrazioni che possiamo implementare tra i due prodotti. Ne abbiamo tante altre, date proprio dalla disponibilità di SharePoint ad essere esteso e a recuperare informazioni da archivi esterni al suo contesto.
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che potete avere un'anteprima di queste tecniche, delle altre che ancora non vi ho anticiapto (ma che vi anticiperò a breve) e in generale di Windows Azure, il giorno 7 Marzo 2011 presso la sede Microsoft di Segrate (Milano) all'evento gratuito &lt;a href="http://azureday01.dotnetlombardia.org/" title="Windwos Azure Day @Microsoft" target="_blank"&gt;"Windows Azure Day"&lt;/a&gt; organizzato dai ragazzi di DotNetLombardia.
&lt;br /&gt;
&lt;br /&gt;Se invece, volete andare più nel dettaglio, questa è l'ultima settimana disponibile per sfruttare l'Early Bind ed iscriversi alle &lt;a href="http://www.mstecnicalconferences.it" title="Microsoft Technical Conferences" target="_blank"&gt;Microsoft Technical Conferences&lt;/a&gt; !
&lt;br /&gt;Passato questo ultimo sconto, anche se mi assicuro che ne verrà la pena, dovrete pagare il prezzo pieno.
&lt;br /&gt;
&lt;br /&gt;&lt;a title="Microsoft Technical Conferences" href="http://www.technicalconferences.it/default.aspx" target=_blank&gt;&lt;img alt="Microsoft Technical Conferences" src="/Images/banner_Leaderboard-10.png"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Azure.aspx" title="TAG: Azure"&gt;Azure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SQLAzure.aspx" title="TAG: SQLAzure"&gt;SQLAzure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SqlAzureAndSharePoint2010WithBCS.aspx" /><issued>2011-2-25T18:26:6+01:00</issued><modified>2011-2-25T18:26:6+01:00</modified></entry><entry><title>Una giornata all'insegna di Windows Azure</title><id>/Blog/SharePointAndWindowsAuzure.aspx</id><created>2011-2-22T17:28:9+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/azureDay.png" alt="Windows Azure Day" style="float: right; margin-left: 10px" /&gt;Gli amici di &lt;a href="http://azureday01.dotnetlombardia.org/" title="Windows Azure Day - DotNetLombardia" target="_blank"&gt;DotNetLombardia&lt;/a&gt; stanno organizzando un evento grauito su Windows Azure, la piattaforma Microsoft per il cloud computing. L'evento sarà presso la sede Microsoft di Segrate (Milano) il giorno 7 marzo 2011.
&lt;br /&gt;Assieme a Roberto e Matteo, ci sarò anche io a parlarvi di come integrare i servizi e le potenzialità di Windows Azure con SharePoint 2010 (tanto per cambiare :) così da poter vedere come sfruttare le potenzialità di entrambi i prodotti ed essere pronti per passare al cloud o per interagire con esso.
&lt;br /&gt;A breve poi, seguiranno anche degli articoli a riguardo sul sito della &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;community&lt;/a&gt;.
&lt;br /&gt;La sessione sarà una "intro" di quello che potrete vedere alla &lt;a href="http://www.sharepointconference.it" target="_blank"&gt;SharePoint Conference&lt;/a&gt; di questo Aprile 2011.
&lt;br /&gt;
&lt;br /&gt;Se volete vedere l'agenda completa e registrarvi all'evento, questo è l'indirizzo:
&lt;br /&gt;&lt;a href="http://azureday01.dotnetlombardia.org/" title="Microsoft Windows Azure Day - DotNetLombardia" target="_blank"&gt;http://azureday01.dotnetlombardia.org/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E, se volete sapere la mia.. sarà una bella giornata.. Vi aspettiamo !
&lt;br /&gt;Peppe
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Windows Azure.aspx" title="TAG: Windows Azure"&gt;Windows Azure&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointAndWindowsAuzure.aspx" /><issued>2011-2-22T17:28:9+01:00</issued><modified>2011-2-22T17:28:9+01:00</modified></entry><entry><title>Query LINQ tramite il Client Object Model di SharePoint 2010</title><id>/Blog/LINQQueriesWithSharePoint2010ClientObjectModel.aspx</id><created>2011-2-21T9:12:43+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg"&gt;Continua la mia serie di articoli sul Client Object Model di SharePoint 2010 pubblicati all'interno di &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunnity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; ! 
&lt;br /&gt;In questa puntata vedremo come è possibile utilizzare delle query LINQ per recuperare oggetti di contenuto filtrandoli prima di effettuare la query al server SharePoint.
&lt;br /&gt;Negli articoli visti fin'ora, abbiamo sempre recuperato informazioni da SharePoint utilizzando il metodo Load della classe ClientContext, a cui abbiamo sempre passato o degli oggetti specifici (siti, liste, collezioni di elementi, ecc...) o il risultato di una query CAML (per quanto riguarda la lettura di elementi di una singola lista).
&lt;br /&gt;Il modello ad oggetti client-side però può offrire molto di più di questo. Infatti, una delle sue potenzialità nasce dall'intergrazione con LINQ, che ci permette di scegliere gli oggetti da inserire nella richiesta al server SharePoint attraverso una query fatta direttamente all'interno del nostro linguaggio .NET preferito, in grado di filtrare a priori i risultati. E' da notare che, per tutti quegli oggetti di contenuto (vedi per esempio una collezione di liste), senza utilizzzare una query LINQ, non è proprio possibile applicare dei filtri prima di far partire la richiesta e questa tecnica ci facilita veramente la vita, anche perchè alza notevolmente le performance delle nostre applicazioni client-side.
&lt;br /&gt;Vi lascio qua il link diretto all'articolo:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=24" title="Query LINQ tramite il Client Object Model di SharePoint 2010" target="_blank"&gt;Query LINQ tramite il Client Object Model di SharePoint 2010&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Mentre qua trovate un riepilogo su tutti gli articoli legati al Client Object Model di SharePoint 2010 pubblicati sul sito della community. 
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Introduzione alle Client-Side API di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" target="_blank"&gt;Introduzione alle Client-Side API di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;A title="Operazioni CRUD con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" target="_blank"&gt;Operazioni CRUD con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione di liste con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15" target="_blank"&gt;Gestione di liste con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16" target="_blank"&gt;Gestione delle eccezioni con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=20" target="_blank"&gt;Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=24" title="Query LINQ tramite il Client Object Model di SharePoint 2010" target="_blank"&gt;Query LINQ tramite il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Buona lettura ! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/LINQQueriesWithSharePoint2010ClientObjectModel.aspx" /><issued>2011-2-21T9:12:43+01:00</issued><modified>2011-2-21T9:12:43+01:00</modified></entry><entry><title>Effettuare una query CAML filtrando su un campo boolean</title><id>/Blog/CAMLQueryOnBooleanField.aspx</id><created>2011-2-19T18:26:9+01:00</created><content type="text/html" mode="escaped">Abbiamo &lt;a href="http://www.peppedotnet.it/Blog/HowToSetDefaultValueInSPFieldBooleanField.aspx" title="Come settare il valore di default per un campo di tipo SPFieldBoolean" target="_blank"&gt;già visto in passato&lt;/a&gt; che il campo di tipo "Boolean" in SharePoint è un campo un pò particolare, perchè sotto sotto salva un tipo di dato "bit" (all'interno di SQL Server) che in realtà vale "1" per il "vero" e "0" per il "falso".
&lt;br /&gt;Quindi, se cerchiamo di fare una query CAML che nella clausola WHERE ha al suo interno un campo di questo tipo, dobbiamo stare attenti ad applicare la medesima teoria. Potremmo infatti incappare nello scrivere una query di questo tipo:
&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;Where&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;Eq&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;FieldRef&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="CampoDiTipoBoolean"&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;Value&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Type&lt;span style='color:#0000FF'&gt;="Boolean"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;TRUE&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Value&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;Eq&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;Where&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ecco.. questa query CAML è &lt;b&gt;SBAGLIATA&lt;/b&gt;.
&lt;br /&gt;La query corretta indica che il valore da confrontare con il campo di tipo Boolean, dovrà essere invece un valore di tipo Integer.
&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;Where&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;Eq&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;FieldRef&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="CampoDiTipoBoolean"&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;Value&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Type&lt;span style='color:#0000FF'&gt;="Integer"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;1&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Value&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;Eq&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;Where&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo modo, vedrete che le vostre query CAML a fronte del filtro su campi di tipo Boolean, funzioneranno alla perfezione.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CAML.aspx" title="TAG: CAML"&gt;CAML&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CAMLQueryOnBooleanField.aspx" /><issued>2011-2-19T18:26:9+01:00</issued><modified>2011-2-19T18:26:9+01:00</modified></entry><entry><title>Come cancellare tanti elementi di una lista SharePoint in un colpo solo!</title><id>/Blog/HowToDeleteLargeNumberOfItemsInSharePointList.aspx</id><created>2011-2-10T12:16:32+01:00</created><content type="text/html" mode="escaped">Se vi è mai capitato da dover cancellare tutti gli elementi di una lista, o cmq una grossa quantità di questi elementi, è probabile che abbiate percorso la via di ciclare tutti questi elementi e richiamare il metodo Delete() su oguno di questi. Se è così, vi sarete sicuramente accorti che l'operazione di cancellazione, a fronte della presenza di tanti elementi all'interno della lista, sarà risultata veramente lenta.
&lt;br /&gt;Questo perchè ad ogni chiamata del metodo Delete() della classe SPListItem viene fatta una query sul database di contenuto di SharePoint.
&lt;br /&gt;Dovete sapere però, che esiste un modo per fare eseguire un'unica query al database e cancellare allo stesso modo tanti elementi di una lista. Questo grazie al metodo &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx" title="Metodo ProcessBatchData della classe SPWeb" target="_blank"&gt;ProcessBatchData&lt;/a&gt; della classe SPWeb.
&lt;br /&gt;Questo metodo vuole come parametro di input una stringa in formato XML che specifichi il numero e la tiplogia di operazioni da eseguire assieme.
&lt;br /&gt;Vediamo quindi come possiamo cancellare più elementi da una lista, in un colpo solo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;StringBuilder sb = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; StringBuilder();
&lt;br /&gt;sb.Append(&lt;span style="color: #A31515"&gt;"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;Batch&gt;"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt; (SPListItem CurrentItem &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; CurrentList.Items)
&lt;br /&gt;{
&lt;br /&gt;    sb.Append(&lt;span style="color: #A31515"&gt;"&lt;Method&gt;"&lt;/span&gt;);
&lt;br /&gt;    sb.Append(&lt;span style="color: #A31515"&gt;"&lt;SetList Scope=\"Request\"&gt;"&lt;/span&gt; + CurrentList.ID + &lt;span style="color: #A31515"&gt;"&lt;/SetList&gt;"&lt;/span&gt;);
&lt;br /&gt;    sb.AppendFormat(&lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"ID\"&gt;{0}&lt;/SetVar&gt;"&lt;/span&gt;, CurrentItem.ID);
&lt;br /&gt;    sb.Append(&lt;span style="color: #A31515"&gt;"&lt;SetVar Name=\"Cmd\"&gt;Delete&lt;/SetVar&gt;"&lt;/span&gt;);
&lt;br /&gt;    sb.Append(&lt;span style="color: #A31515"&gt;"&lt;/Method&gt;"&lt;/span&gt;);
&lt;br /&gt;}
&lt;br /&gt;sb.Append(&lt;span style="color: #A31515"&gt;"&lt;/Batch&gt;"&lt;/span&gt;);
&lt;br /&gt;
&lt;br /&gt;SPContext.Current.Site.RootWeb.ProcessBatchData(sb.ToString());&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come vi sarete accorti, la sintassi XML da utilizzare per la specifica di queste operazioni (che nel nostro caso sono solamente delle cancellazion) è molto simile a quelli che dobbiamo utilizzare per richiamare i web services esposti da SharePoint (già dalla versione 2007 del prodotto).
&lt;br /&gt;In questo esempio abbiamo visto come è possibile fare tante operaioni di cancellazione in un colpo solo, ma volendo, possiamo eseguire operazioni di vario genere e vi assiucuro che la cosa pu essere veramente utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDeleteLargeNumberOfItemsInSharePointList.aspx" /><issued>2011-2-10T12:16:32+01:00</issued><modified>2011-2-10T12:16:32+01:00</modified></entry><entry><title>Solo per oggi: sconto del 50% sui libri su SharePoint 2010 di Microsoft Press</title><id>/Blog/OnlyForTodaySave50OnSharePoint2010Books.aspx</id><created>2011-2-8T12:25:37+01:00</created><content type="text/html" mode="escaped">O'Reilly Media, solo per oggi (08/02/2011), rilascia uno sconto del 50% su tutti gli e-book attualmente pubblicati relativi a SharePoint 2010.
&lt;br /&gt;Questi i libri in questione:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Managing and Implementing Microsoft SharePoint 2010 Projects&lt;/li&gt;&lt;li&gt;Microsoft SharePoint 2010 Administrator's Pocket Consultant&lt;/li&gt;&lt;li&gt;Microsoft SharePoint 2010 Administrator's Companion&lt;/li&gt;&lt;li&gt;Designing Solutions for Microsoft SharePoint 2010&lt;/li&gt;&lt;li&gt;Microsoft SharePoint Designer 2010 Step by Step&lt;/li&gt;&lt;li&gt;Microsoft SharePoint 2010 Plain &amp; Simple&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Il codice di sconto è: DDSDX
&lt;br /&gt;Qua trovate il dettaglio di questa offerta: &lt;a href="http://oreilly.com/store/ddsdx.html?utm_campaign=Feed%3A+oreilly%2Fmspebookdeal+%28Microsoft+Press+Ebook+Deal+of+the+Day%29" title="SharePoint 2010 Titles from Microsoft Press
&lt;br /&gt;" target="_blank"&gt;SharePoint 2010 Titles from Microsoft Press&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OnlyForTodaySave50OnSharePoint2010Books.aspx" /><issued>2011-2-8T12:25:37+01:00</issued><modified>2011-2-8T12:25:37+01:00</modified></entry><entry><title>Come nascondere un bottone dalla barra dei Ribbon di SharePoint 2010</title><id>/Blog/HowToHideButtonsFromSharePoint2010RibbonBar.aspx</id><created>2011-2-3T11:45:2+01:00</created><content type="text/html" mode="escaped">Molto spesso può capitare di volere togliere la possibilità agli utenti di eseguire delle specifiche azioni su una lista o in generale su qualche pagina di un particolare sito e, allo stesso tempo, di voler comunque mantenere un certo tipo di livello di autorizzazioni sull'oggetto in questione (lista, elemento, conten type, pagina, ecc...) per l'utente finale.
&lt;br /&gt;La maggior parte di queste azioni, dall'avvento di SharePoint 2010, sono disponibili attraverso la barra dei Ribbon e vengono visualizzate o nascoste in base ai permessi che ha l'utente corrente sull'oggetto che sta visualizzando o che ha selezionato.
&lt;br /&gt;Per tutte le azioni custom create da noi, o per alcune delle azioni presenti all'interno dell'Edit Control Block (il menu contestuale che appare sul campo "Title" di ogni elemento di una lista o di una document library), o quelle presenti all'interno del menu "Site actions" o, per esempio, all'interno della pagina "Site settings" di un sito SharePoint, abbiamo la possibilità di utilizzare l'elemento &lt;a href="http://msdn.microsoft.com/en-us/library/ms414790.aspx" title="Elemento HideCustomAction" target="_blank"&gt;"HideCustomAction"&lt;/a&gt; posto all'interno di una specifica feature. A riguardo, c'è da dire che per nascondere alcune delle operazioni che si possono fare tramite l'Edit Control Block, l'unico modo di farlo è modificare un file Javascript o che, in generale, l'elemento HideCustomAction non è che funzioni poi così tanto bene, ma questo è tutto un altro discorso.
&lt;br /&gt;
&lt;br /&gt;Infatti, tale elemento NON è da utilizzare se voglio nascondere qualcosa dalla barra dei Ribbon di SharePoint 2010.
&lt;br /&gt;Per nascondere un elemento, un gruppo o addirittura un tab dalla barra dei Ribbon per uno specifico template di lista, per un content type, per uno specifico ProgID o per una singola tipologia di file, non dobbiamo far altro che creare una nuova custom action (utilizzando l'elemento "CustomAction") e definire al suo interno l'inizio della definizione di un nuovo controllo per la barra dei Ribbon, specificando il medesimo identificativo del controllo che invece vogliamo togliere, all'interno dell'attributo "LocationID" dell'elemento "CommandUIDefinition". Lasciando poi vuota l'implementazione.
&lt;br /&gt;Ecco quindi il codice della nostra custom action, utile a nasconde il pulsante "New" da tutte le document library che utilizzando il content type "Document" (ID: 0x0101).
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="PeppeDotNet.Ribbon.Documents.HideNewButton"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hides new button from document content type"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="0x0101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="ContentType"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.New.NewDocument"&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;!--&lt;/span&gt;&lt;span style='color:#FF0000'&gt; empty implementation --&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così facendo, se effettuiamo il deploy della nostra soluzione ed attiviamo la corrispondente feature, vedremo che all'interno di una normale Document Library, non avremo più la possibilità di visualizzare il tasto "New".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HideRibbon_01.jpg" alt="Hide new button from Ribbon toolbar" /&gt;
&lt;br /&gt;
&lt;br /&gt;L'identificativo per recuperare e quindi nascondere il tasto "New", come avete potuto vedere dal listato qui sopra, è il seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Ribbon.Documents.New.NewDocument&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;Per recuperare questo identificativo, non dobbiamo far altro che consultare la &lt;a href="http://msdn.microsoft.com/en-us/library/ee537543.aspx" title="Default Server Ribbon Customization Locations
&lt;br /&gt;" target="_blank"&gt;documentazione&lt;/a&gt; oppure aprire e sfogliare per bene il file &lt;b&gt;CMDUI.xml&lt;/b&gt; posto all'interno della directory:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\XML&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Seguendo questa tecnica siamo in grado di sovrascrivere completamente la barra dei Ribbon di SharePoint 2010 secondo le nostre necessità. Se volessimo infatti fornire agli utenti finali in una nuova interfaccia grafica o una nuova funzionalità per il tasto "New" di una Document Library, non dobbiamo far altro che nasconderlo utilizzando la tecnica appena vista e scrivere una nuova custom action per mettere un nuovo controllo (nel nostro caso un bottone) al suo posto, in grado di fornire delle operazioni personalizzate utili ai nostri scopi.
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="PeppeDotNet.Ribbon.Documents.Replace.HideNewButton"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hides new button from document content type"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="0x0101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;=""&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt;
&lt;br /&gt;          Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.New.NewDocument"&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;CommandUIDefinitions&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;CommandUIExtension&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;CustomAction&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="PeppeDotNet.Ribbon.Documents.Replace"&lt;/span&gt;
&lt;br /&gt;                  Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                  Title&lt;span style='color:#0000FF'&gt;="Replace new button from document content type"&lt;/span&gt;
&lt;br /&gt;                  RegistrationId&lt;span style='color:#0000FF'&gt;="0x0101"&lt;/span&gt;
&lt;br /&gt;                  RegistrationType&lt;span style='color:#0000FF'&gt;="ContentType"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.New.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="PeppeDotNet.Ribbon.Documents.Replace.New"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Custom new document"&lt;/span&gt;
&lt;br /&gt;                  Image32by32&lt;span style='color:#0000FF'&gt;="/_layouts/$Resources:core,Language;/images/formatmap32x32.png"&lt;/span&gt; 
&lt;br /&gt;                  Image32by32Top&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt; 
&lt;br /&gt;                  Image32by32Left&lt;span style='color:#0000FF'&gt;="-64"&lt;/span&gt;
&lt;br /&gt;                  ToolTipTitle&lt;span style='color:#0000FF'&gt;="$Resources:core,cui_ButNewDocument;"&lt;/span&gt;
&lt;br /&gt;                  ToolTipDescription&lt;span style='color:#0000FF'&gt;="$Resources:core,cui_STT_ButNewDocument;"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt; 
&lt;br /&gt;                  Sequence&lt;span style='color:#0000FF'&gt;="1"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ecco il risultato finale:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HideRibbon_02.jpg" alt="Hide new button from Ribbon toolbar" /&gt;
&lt;br /&gt;
&lt;br /&gt;Bello no ? :)
&lt;br /&gt;Se volete provare con mano, ecco qua i sorgenti che ho utilizzato per fare le mie prove:
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.SP2010.Ribbon.zip" title="PeppeDotNet.SP2010.Ribbon.zip"&gt;PeppeDotNet.SP2010.Ribbon.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToHideButtonsFromSharePoint2010RibbonBar.aspx" /><issued>2011-2-3T11:45:2+01:00</issued><modified>2011-2-3T11:45:2+01:00</modified></entry><entry><title>Utenti con permesso Contribute non possono inserire file .XAP o .SWF in una document library di SharePoint 2010</title><id>/Blog/CantAddXAPorSWFintoDocumentLibrarySP2010.aspx</id><created>2011-1-12T18:44:6+01:00</created><content type="text/html" mode="escaped">Al contrario di quanto succedeva su WSS 3.0/MOSS 2007, se provate ad inserire un file .XAP o un file .SWF all'interno di una document library di SharePoint 2010, con un utenza che ha permessi di "Contribute" sulla medesima libreria, verrete ridirezionati sulla pagina di errore. L'errore stampato sarà di tipo "Access Denied".
&lt;br /&gt;Questo perchè, by desgin, all'interno di una document library di SharePoint 2010 è possibile inserire certe tipologie di file SOLO con permessi da "Design" in su.
&lt;br /&gt;Gli utenti con permesso di "Contribute" non possono inserire tutte queste tipologie di file:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;.ASPX&lt;/li&gt;&lt;li&gt;.MASTER&lt;/li&gt;&lt;li&gt;.XAP&lt;/li&gt;&lt;li&gt;.SWF&lt;/li&gt;&lt;li&gt;.JAR&lt;/li&gt;&lt;li&gt;.ASMX&lt;/li&gt;&lt;li&gt;.ASCX&lt;/li&gt;&lt;li&gt;.XSN&lt;/li&gt;&lt;li&gt;.XSF&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Questo perchè le tipologie di file appena elencate sono considerate come "web sensitive", anche se non sono presenti all'interno dei file bloccati da SharePoint.
&lt;br /&gt;Questo l'articolo della KB di riferimento:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/2483447" title="Contributors are not permitted to upload SWF files onto Sharepoint 2010" target="_blank"&gt;http://support.microsoft.com/kb/2483447&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/XAP.aspx" title="TAG: XAP"&gt;XAP&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SWF.aspx" title="TAG: SWF"&gt;SWF&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CantAddXAPorSWFintoDocumentLibrarySP2010.aspx" /><issued>2011-1-12T18:44:6+01:00</issued><modified>2011-1-12T18:44:6+01:00</modified></entry><entry><title>On-line il sito della SharePoint Conference 2011 e dell'evento MS Technical Conferences 2011</title><id>/Blog/SharePointConference2011Site.aspx</id><created>2011-1-11T9:59:27+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/msTechnicalConf2011.jpg" alt="Microsoft Technical Conferences 2011" style="float: right; margin: 10px" /&gt; Da ieri sera è on-line il sito della &lt;a href="http://www.sharepointconference.it/" title="SharePoint &amp; Office Conference 2011" target="_blank"&gt;Microsoft SharePoint &amp; Office Conference 2011&lt;/a&gt; assieme ai siti delle &lt;a href="http://www.mstechnicalconferences.it" title="Microsoft Technical Conferences 2001" target="_blank"&gt;Microsoft Technical Conferences 2001&lt;/a&gt;, l'evento dell'anno 2011 che raccoglie assieme due delle più importanti conferenze italiane (SharePoint Conference e SQL Confernce) e la neonata Unified Comunication &amp; Collaboration Conference.
&lt;br /&gt;
&lt;br /&gt;Assieme a qualche contenuto (ancora ne l'agenda ne le sessioni sono on-line) avete la possibilità di avvalervi di un super sconto se vi iscrivete ora ! Si risparmiano circa 200 euro sul normale costo dell'iscrizione (per la conferenza su SharePoint, il prezzo dei 3 giorni è di 685 euro, al posto di 900 euro.. vedete un pò voi !).
&lt;br /&gt;Non fatevi sfuggire questa occasione perchè vi assicuro che sarà un evento fantastico !!
&lt;br /&gt;
&lt;br /&gt;Inoltre, è stata annunciata una nuova iniziativa che sarà presente in tutte e tre le conference: 
&lt;br /&gt;- SharePoint Clinic
&lt;br /&gt;- SQL Clinic
&lt;br /&gt;- Unified Communication Clinic
&lt;br /&gt;
&lt;br /&gt;In sintesi, avrai la possibilità di incontrare i gli specialisti italiani del Microsoft Customer Service and Support (CSS) che, grazie alla loro esperienza plueriennale sui problemi incontrati dai clienti nell'adozione di Microsoft SharePoint a livello europeo, ti aiuteranno a risolvere i tuoi problemi con SharePoint, SQL Server o altri prodotti targati Microsoft.
&lt;br /&gt;Per quanto riguarda SharePoint, gli specialisti della SharePoint Clinic saranno coadiuvati dai membri di &lt;a href="http://www.sharepointcommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt;, la Community Italiana per professionisti che lavorano sul prodotto di collaborazione Microsoft.
&lt;br /&gt;
&lt;br /&gt;Intanto, vi lascio qua i link ai 3 siti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointconference.it/" title="SharePoint &amp; Office Conference 2011" target="_blank"&gt;http://www.sharepointconference.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlconference.it/" title="SQL Server &amp; BI Conference 2011" target="_blank"&gt;http://www.sqlconference.it&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ucconference.it/" title="Unified Communication &amp; Collaboration Conference 2011" target="_blank"&gt;http://www.ucconference.it&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Io sarò &lt;a href="http://www.sharepointconference.it/events/2011/WorkInProgress/speakers.aspx" title="SharePoint Conference speakers" target="_blank"&gt;speaker&lt;/a&gt; per la SharePoint &amp; Office Conference anche quest'anno e sono felicissimo di dirvelo..
&lt;br /&gt;Vi tengo aggiornati sulle mie sessioni, l'agenda e tutto quanto !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointConference2011Site.aspx" /><issued>2011-1-11T9:59:27+01:00</issued><modified>2011-1-11T9:59:27+01:00</modified></entry><entry><title>Come risolvere gli errori legati al deployment di modelli del BCS di SharePoint 2010</title><id>/Blog/HowToSolveAddSolutionErrorsSharePoint2010BCSModel.aspx</id><created>2011-1-10T10:1:57+01:00</created><content type="text/html" mode="escaped">Sviluppando dei modelli personalizzati per i Business Connectivity Services di SharePoint 2010 tramite Visual Studio 2010, potete incappare in un errore in fase di deployment. Il mio errore era dato dal fatto che prima avevo caricato un modello con un identificatore di tipo System.String, poi ho tentato di cambiarlo in System.Int32 (non mi sembra l'operazione più strana o difficile del mondo, ma vabbè..) e, così facendo, non riuscivo più ad effettuare il deployment della mia soluzione all'interno della Central Administration di SharePoint.
&lt;br /&gt;Nel dettaglio, la dicitura dell'errore era:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Error occurred in deployment step 'Add Solution': Model file 'TestModel\TestModel.bdcm' has the following External Content Type activation errors: 
&lt;br /&gt;TypeDescriptor with Name 'Identifier1' (found in Parameter with Name 'returnParameter', Method with Name 'ReadList', Entity (External Content Type) with Name 'Entity1' and Version '1.0.0.20' in Namespace 'PeppeDotNet.TestModel') refers to an Identifier with Name 'Identifier1' of Type 'System.Int32' which is supposed to exist on Entity with Name 'Entity1' in Namespace 'PeppeDotNet.TestModel'. This Identifier cannot be found.&lt;/div&gt;
&lt;br /&gt;Praticamente il sistema di deployment si accorge che è stato cambiato l'identificatore, confrontando la vecchia versione del modello deployato, e s'incazza !
&lt;br /&gt;Per risolvere questo problema pensavo bastasse un retract della soluzione per poi andare su
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Central Administration &gt; Application Management &gt; Manage Service Applications &gt; Business Data Connectivity Services&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;e cancellare il modello su cui stavo lavorando.
&lt;br /&gt;Invece NO !
&lt;br /&gt;&lt;b&gt;E' necessario cancellare tutte le occorrenze del modello in questione anche dalle pagine "External systems" e "External content types"&lt;/b&gt; alle quali potete accedere dal menu a tendina che trovate in alto nella pagina dell'elenco dei modelli BCS installati.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/bcsErrorSolve.jpg" alt="Come risolvere gli errori legati al deployment di modelli del BCS di SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, siete liberi di rieffettuare un deployment della vostra soluzione che verrà installata senza alcun errore.
&lt;br /&gt;Spero possa esser utilie a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/BCS.aspx" title="TAG: BCS"&gt;BCS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToSolveAddSolutionErrorsSharePoint2010BCSModel.aspx" /><issued>2011-1-10T10:1:57+01:00</issued><modified>2011-1-10T10:1:57+01:00</modified></entry><entry><title>Evento &quot;SharePoint 2010 Firestarter&quot; - 27 Gennaio 2011</title><id>/Blog/SharePoint2010FireStarter.aspx</id><created>2011-1-8T11:33:42+01:00</created><content type="text/html" mode="escaped">Sulla scia dell'evento "FireStarter" su Silverlight, Microsoft offrirà l'omonimo evento anche per &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032473308" title="SharePoint 2010 Firestarter" target="_blank"&gt;SharePoint 2010&lt;/a&gt; !
&lt;br /&gt;L'evento avrà luogo a Redmond il 27 gennaio 2011 e in diretta streaming.
&lt;br /&gt;
&lt;br /&gt;Ecco qua l'agenda:
&lt;br /&gt; 
&lt;br /&gt;[Time  (PST)] Session - Speaker
&lt;br /&gt;[08:30 am - 09:00 am] Introduction to the day - &lt;a href="http://blogs.msdn.mithund/" title="Mithun Dhar" target="_blank"&gt;Mithun Dhar&lt;/a&gt;
&lt;br /&gt;[09:00 am - 10:00 am] Keynote - &lt;a href="http://sharepoint.microsoft.com/blog/Pages/default.aspx" title="Eric Swift" target="_blank"&gt;Eric Swift&lt;/a&gt;
&lt;br /&gt;[10:00 am - 10:15 am] Break
&lt;br /&gt;[10:15 am - 11:15 am] SharePoint 2010 Developer Overview - &lt;a href="http://blogs.msdn.mithund/" title="Mithun Dhar" target="_blank"&gt;Mithun Dhar&lt;/a&gt;
&lt;br /&gt;[11:15 am - 12:15 pm] SharePoint 2010 Developer Tools - &lt;a href="http://sharepoint.microsoft.com/blog/Pages/default.aspx" title="Mike Morton" target="_blank"&gt;Mike Morton&lt;/a&gt;
&lt;br /&gt;[12:15 pm - 01:00 pm] Lunch
&lt;br /&gt;[01:00 pm - 02:00 pm] SharePoint Development in the Cloud with SharePoint Online - &lt;a href="http://blogs.msdn.com/b/cmayo/" title="Chris Mayo" target="_blank"&gt;Chris Mayo&lt;/a&gt; 
&lt;br /&gt;[02:00 pm - 03:00 pm] Integrating SharePoint with Office - &lt;a href="http://blogs.msdn.com/b/donovanf/" title="Donovan Follette" target="_blank"&gt;Donovan Follette&lt;/a&gt; 
&lt;br /&gt;[03:00 pm - 03:15 pm] Break   
&lt;br /&gt;[03:15 pm - 04:15 pm] Integrating SharePoint with Azure - &lt;a href="http://blogs.msdn.com/b/steve_fox/" title="Steve Fox" target="_blank"&gt;Steve Fox&lt;/a&gt; 
&lt;br /&gt;[04:15 pm - 05:00 pm] Integrating SharePoint with Silverlight - &lt;a href="http://blogs.msdn.com/b/pstubbs/" title="Paul Stubbs" target="_blank"&gt;Paul Stubbs&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per iscriversi all'evento on-line, seguire questo link:
&lt;br /&gt;&lt;a href="http://go.microsoft.com/?linkid=9756774" title="Iscrizione on-line a SharePoint 2010 FireStarter" target="_blank"&gt;http://go.microsoft.com/?linkid=9756774&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Firestarter.aspx" title="TAG: SharePoint Firestarter"&gt;SharePoint Firestarter&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010FireStarter.aspx" /><issued>2011-1-8T11:33:42+01:00</issued><modified>2011-1-8T11:33:42+01:00</modified></entry><entry><title>L'elemento RenderPattern di un campo custom in SharePoint 2010 &#232; obsoleto !</title><id>/Blog/RenderPatternInSharePoint2010IsNowObsolete.aspx</id><created>2011-1-8T10:55:14+01:00</created><content type="text/html" mode="escaped">Lo dice anche la documentazione qua:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa544291.aspx" title="RenderPattern" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/aa544291.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;In SharePoint 2010, se iniziate la scrittura di un campo custom così come siete abituati dallo sviluppo in WSS 3.0/MOSS 2007 ed utilizzate, appunto, l'elemento RenderPattern per modificare il rendering del vostro campo nelle varie viste, vi accorgerete subito che tutte le modifiche che apporterete alla visualizzazione secondo le tecniche che già conoscete, non verranno applicate.
&lt;br /&gt;Perchè ? Semplicissimo.. in SharePoint 2010 sono stati introdotti i "Field Rendering Templates", che non sono altro che degli oggetti che modificano il rendering di un campo custom tramite XSLT. Si perchè ora, tutto il rendering di viste è fatto in XSLT e di conseguenza lo doveva essere anche il rendering dei campi custom.
&lt;br /&gt;Spero di parlarvi presto di queste nuove tecniche, cmq all'interno della documentazione trovate &lt;a href="http://msdn.microsoft.com/en-us/library/bb862248.aspx" title="How to: Create a Custom Field Type" target="_blank"&gt;tutto quello che vi serve&lt;/a&gt; per iniziare.
&lt;br /&gt;
&lt;br /&gt;Riguardo il nostro elemento RenderPattern, dobbiamo sapere però che è ancora supportato (ma SOLO per tutti quei campi che sono stati sviluppati nella versione precedente di SharePoint, in quanto la best practice è di utilizzare il rendering in XSLT).
&lt;br /&gt;Per permettere la visualizzazione di quanto avete scritto all'interno del metodo RenderPattern, basta aggiungere la proprietà &lt;b&gt;CAMLRendering&lt;/b&gt; all'interno dell'XML di definizione del nostro campo personalizzato e valorizzarla a &lt;b&gt;TRUE&lt;/b&gt;.
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;FieldTypes&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;FieldType&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="TypeName"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;MyField&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Field&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="ParentType"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;MultiColumn&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Field&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="TypeDisplayName"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;TEST RenderPattern field&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Field&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="FieldTypeClass"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Peppe.MyField, $SharePoint.Project.AssemblyFullName$&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Field&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="CAMLRendering"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;TRUE&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Field&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;RenderPattern&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Name&lt;span style='color:#0000FF'&gt;="DisplayPattern"&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;Switch&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;Expr&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;Column&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;Expr&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;Case&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Value&lt;span style='color:#0000FF'&gt;=""&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;Default&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;Column&lt;/span&gt;&lt;span style='color:#FF0000'&gt; SubColumnNumber&lt;span style='color:#0000FF'&gt;="0"&lt;/span&gt; HTMLEncode&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;HTML&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;![CDATA[&lt;BR&lt;/span&gt;&lt;span style='color:#FF0000'&gt; /&gt;]]&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;HTML&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;Column&lt;/span&gt;&lt;span style='color:#FF0000'&gt; SubColumnNumber&lt;span style='color:#0000FF'&gt;="1"&lt;/span&gt; HTMLEncode&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;Default&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;Switch&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;RenderPattern&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;FieldType&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;FieldTypes&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se avete migrato a SharePoint 2010 e vi siete portati dietro dei campi custom che utilizzano l'elemento RenderPattern, potete usare questa tecnica per permettere al campo di continuare a funzionare senza troppi problemi. Il mio consiglio cmq è di migrare il campo, utilizzando il rendering in XSLT.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Custom field.aspx" title="TAG: Custom field"&gt;Custom field&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/RenderPattern.aspx" title="TAG: RenderPattern"&gt;RenderPattern&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/RenderPatternInSharePoint2010IsNowObsolete.aspx" /><issued>2011-1-8T10:55:14+01:00</issued><modified>2011-1-8T10:55:14+01:00</modified></entry><entry><title>Come recuperare la lista dei comandi Powershell per SharePoint 2010</title><id>/Blog/HowToGetSharePoint2010PowershellCommandsList.aspx</id><created>2011-1-4T11:7:36+01:00</created><content type="text/html" mode="escaped">Nella nuova versione di SharePoint, Powershell gioca un ruolo fondamentale in quanto sono disponibili una grossa quantità di comandi ("cmdlet", per utilizzare il gergo corretto) utili proprio a fare tutte quelle operazioni che in MOSS 2007/WSS 3.0 facevamo tramite l'utility a riga di comando STSADM.
&lt;br /&gt;Abbiamo quindi comandi specifici per gestire le soluzioni, altri per le feature, per i backup, ecc..
&lt;br /&gt;Ecco.. data la mole di questi comandi, risulta veramente difficile tenerli a mente tutti quanti e magari non sempre abbiamo la documentazione disponibile.
&lt;br /&gt;Utilizzando però la stessa "SharePoint 2010 Management Shell" abbiamo la possibilità di recuperare l'elenco di tutti questi comandi, con più o meno informazioni riguardo ognuno di questi, tramite la seguente sintassi:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Get-Command –PSSnapin "Microsoft.SharePoint.PowerShell" | select name, definition | format-list &gt; "C:\Users\peppe\Desktop\ComandiPowershellSP2010.txt"&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo caso abbiamo scelto di visualizzare il nome del comando e la relativa definizione (utile a vedere quali i parametri di entrata necessita il comando stesso).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/SP2010PowershellCommands.jpg" alt="Come recuperare la lista dei comandi Powershell per SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se siete assaliti dalla prigrizia post vacanze, vi lascio il file di testo contenente l'elenco dei comandi generato dall'istruzione appena vista.
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/ComandiPowershellSP2010.txt" alt="ComandiPowershellSP2010.txt" target="_blank"&gt;ComandiPowershellSP2010.txt&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero possa esservi utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Powershell.aspx" title="TAG: Powershell"&gt;Powershell&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToGetSharePoint2010PowershellCommandsList.aspx" /><issued>2011-1-4T11:7:36+01:00</issued><modified>2011-1-4T11:7:36+01:00</modified></entry><entry><title>Client Object Model di SharePoint 2010: come migliorare le performance sulle selezioni</title><id>/Blog/IncreasePerformanceOnSelectionUsingSharePointClientObjectModel.aspx</id><created>2010-12-28T11:46:8+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;Continua la mia serie di articoli sul Client Object Model di SharePoint 2010 pubblicati all'interno di &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; !
&lt;br /&gt;In questa puntata parliamo di performance. 
&lt;br /&gt;Durante lo sviluppo di applicazioni client che interagiscono con SharePoint è molto importante controllare il carico dei dati che richiediamo al server, perchè questo va a discapito dell'utilizzo della nostra applicazione da parte dell'utente. Si deve valutare bene di richiedere sempre e solo quello che risulta strettamente necessario all'applicazione e niente di più !
&lt;br /&gt;Molto spesso, sopratutto quando si compiono i primi passi con il Client Object Model di SharePoint 2010, siamo portati ad inserire nella nostra richiesta oggetti interi, per poi utilizzarne solo alcune prorpietà. Ecco.. un approccio del genere, a lungo andare va a pesare sull'interazione che ha la nostra applicazione client con i siti SharePoint, ne diminuisce l'usabilità e tutto il resto che ne consegue.
&lt;br /&gt;In questo articolo (di cui trovate il link qui sotto) vi spiego come cercare di richiedere al server SharePoint, solamente le informazioni di cui abbiamo effettivamente bisogno. Nulla di più, nulla di meno !
&lt;br /&gt;Questo il link diretto al sito:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=20" title="Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model" target="_blank"&gt;Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Mentre qua trovate un riepilogo su tutti gli articoli legati al Client Object Model di SharePoint 2010 pubblicati sul sito della community.
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Introduzione alle Client-Side API di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" target="_blank"&gt;Introduzione alle Client-Side API di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Operazioni CRUD con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" target="_blank"&gt;Operazioni CRUD con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione di liste con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15" target="_blank"&gt;Gestione di liste con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16" target="_blank"&gt;Gestione delle eccezioni con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=20" title="Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model" target="_blank"&gt;Migliorare le performance sulle selezioni di contenuti effettuate tramite il Client Object Model&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Se avete diffocoltà nell'utilizzo del Client Object Model, non esitate a scrivere sul &lt;a href="http://social.msdn.microsoft.com/Forums/it-IT/sharepointit/threads" title="Forum SharePoint Dev" target="_blank"&gt;forum Micorsoft di sviluppo su SharePoint&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/IncreasePerformanceOnSelectionUsingSharePointClientObjectModel.aspx" /><issued>2010-12-28T11:46:8+01:00</issued><modified>2010-12-28T11:46:8+01:00</modified></entry><entry><title>Customizzazione della barra dei RIbbon di SharePoint 2010 e la cache</title><id>/Blog/SharePoint2010RibbonCustomizationAndCache.aspx</id><created>2010-12-27T11:40:45+01:00</created><content type="text/html" mode="escaped">Se approcciate per la prima volta le tecniche di sviluppo di personalizzazioni alla barra dei Ribbon di SharePoint 2010 (seguendo magari &lt;a href="http://www.peppedotnet.it/Guides/SharePoint%202010.aspx" title="Guida SharePoint 2010" target="_blank"&gt;uno dei post&lt;/a&gt; presenti su questo sito), vi accorgerete subito che molto spesso le modifiche che effettuate alle vostre personalizzazioni non vengono recepite immediatamente dall'interfaccia del sito SharePoint 2010.
&lt;br /&gt;Questo accade sia a fronte di modifiche alle strutture XML, sia a fronte di modifiche sul codice Javascript legato al Ribbon o su eventuali file Javascript esterni.
&lt;br /&gt;Ecco, se vi accorgete di un comportamento del genere, sappiate che &lt;b&gt;è il browser che state utilizzando a mettere in cache il codice Javascript utile a visualizzare il Ribbon e a definirne eventuali azioni&lt;/b&gt;.
&lt;br /&gt;
&lt;br /&gt;Per risolvere questo problema basta pulire la cache del browser (e questo vale per le modifiche effettuate al codice Javascript del vostro Ribbon) oppure aggiungere il numero di verisone alla Feature che contiene la definizione della vostra personalizzazione alla barra dei Ribbon.
&lt;br /&gt;
&lt;br /&gt;Se state utilizzando Internet Explorer (dalla versione 7 in su) basta scegliere il tasto F12 per aprire gli strumenti per sviluppatori e scegliere le voci "Always refresh from server" e "Clear browser cache" presenti all'interno del menu "Cache".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/clearcache.jpg" alt="IE clear cache" /&gt;
&lt;br /&gt;
&lt;br /&gt;Anche tutti gli altri browser hanno la funzionalità di pulizia della cache, quindi non preoccupatevi :)
&lt;br /&gt;Invece, per specificare il numero di versione alla feature che conterrà la vostra personalizzazione, basta aggiungere (o modificare) l'attributo "Version" all'interno dell'elemento "Feature" tramite Visual Studio 2010.
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Feature&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/span&gt; version&lt;span style='color:#0000FF'&gt;="1.0.0.1"&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;Feature&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così facendo, all'interno dell'interfaccia utente di SharePoint 2010 dovreste avere sempre la versione aggiornata della vostra personalizzazione alla barra dei Ribbon.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RibbonCustomizationAndCache.aspx" /><issued>2010-12-27T11:40:45+01:00</issued><modified>2010-12-27T11:40:45+01:00</modified></entry><entry><title>Non sai che versione di SharePoint scegliere ?</title><id>/Blog/HowToChooseSharePointVersion.aspx</id><created>2010-12-21T19:49:4+01:00</created><content type="text/html" mode="escaped">SharePoint 2010 espone davvero tante funzionalità e molto spesso risulta veramente difficile districarsi tra tutte queste e le differenti versioni del prodotto stesso.
&lt;br /&gt;Durante corsi o demo, mi è capitato spesso di presentare una di queste funzionalità di SharePoint e ricevere a seguito le domande "ma in che versione è ?", "è presente nella parte gratis ?" e chi più ne ha più ne metta..
&lt;br /&gt;
&lt;br /&gt;Ecco.. queste domande hanno ovviamente una risposta all'interno della documentazione, ma ne hanno una anche direttamente dal sito del prodotto all'interno del quale possiamo vedere una rapida classificazione di feature, divise per versioni.
&lt;br /&gt;Ecco l'indirizzo:
&lt;br /&gt;&lt;a href="http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx" title="SharePoint version comparison" target="_blank"&gt;http://sharepoint.microsoft.com/en-us/buy/Pages/Editions-Comparison.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero che vi possa essere d'aiuto !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/Sharepoint.aspx" title="TAG: Sharepoint"&gt;Sharepoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Sharepoint 2010.aspx" title="TAG: Sharepoint 2010"&gt;Sharepoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Sharepoint Foundation 2010.aspx" title="TAG: Sharepoint Foundation 2010"&gt;Sharepoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToChooseSharePointVersion.aspx" /><issued>2010-12-21T19:49:4+01:00</issued><modified>2010-12-21T19:49:4+01:00</modified></entry><entry><title>SharePointCommunity.it su Community Ring</title><id>/Blog/SharePointCommunityRing.aspx</id><created>2010-12-20T9:49:8+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" style="float:right; margin: 10px" /&gt;&lt;img src="http://www.peppedotnet.it/Images/CR-Logo-Medium.png" style="float:right; margin: 10px" /&gt;Da questo weekend, anche &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; è presente all'interno di &lt;a href="http://www.communityring.net/" title="CommunityRing.net" target="_blank"&gt;CommunityRing.net&lt;/a&gt; !
&lt;br /&gt;
&lt;br /&gt;Cos'è CommunityRing ?
&lt;br /&gt;E' una lodevole iniziativa del mitico &lt;a href="http://blogs.ugidotnet.org/raffaele/" title="Raffaele Rialdi" target="_blank"&gt;Raf&lt;/a&gt;, per cercare di fornire al popolo delle community un punto centrale per informarsi su eventi, community stesse e quant'altro.
&lt;br /&gt;Dico lodevole perchè ogni tanto capita che effettivamente mi perdo anch'io qualcuno degli eventi delle varie community italiane e, visto quante sono e quanto si danno da fare, era davvero un peccato non avere un punto unico per visualizzare gli eventi di tutti. Lodevole anche perchè l'iniziativa parte da un singolo, che si da sempre tanto da fare per le community italiane.
&lt;br /&gt;
&lt;br /&gt;Quindi, da ora in poi, oltre a tutti i vari eventi che organizzano le community italiane legate a .NET potete trovare anche quelli organizzati da SharePointCommunity a questo indirizzo:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.communityring.net/" title="CommunityRing.net" target="_blank"&gt;www.communityring.net&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;][&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;] [&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/SharePointCommunityRing.aspx" /><issued>2010-12-20T9:49:8+01:00</issued><modified>2010-12-20T9:49:8+01:00</modified></entry><entry><title>Date non corrette utilizzando il Client Object Model di SharePoint 2010</title><id>/Blog/IncorrectDatesTakenFromSharePoint2010ClientObjectModel.aspx</id><created>2010-11-29T9:33:12+01:00</created><content type="text/html" mode="escaped">In tutto questo periodo in cui ho utilizzato il client object model di SharePoint 2010, ho sempre dato per scontato che i dati ritornati dalle mie query effettuate sugli elementi di liste fossero corretti. O meglio, non ho mai avuto problemi con tutti quelli con cui ho avuto a che fare fin'ora, ma non avevo mai interagito con dei campi di tipo "data e ora".
&lt;br /&gt;In questa settimana invece ho avuto la necessità di leggere gli elementi presenti all'interno di una lista di task e di stamparli a video in un'applicazione eseguita client-side.
&lt;br /&gt;Inizialmente, una volta letti i dati dalla lista SharePoint, non mi è saltato all'occhio niente di strano. Dopo un pò invece, mi accorgo di una discrepanza tra le date presenti nella mia applicazione e quelle visibili all'interno dell'interfaccia di SharePoint 2010.
&lt;br /&gt;Vi rendo subito partecipi della cosa.. provate a creare una nuova lista di Task all'interno di uno dei vostri siti SharePoint 2010, inserite un pò di task con date varie ed incollate questo codice all'interno di una console application (dopo aver aggiunto la referenza sia alla libreria Microsoft.SharePoint.dll che alle librerie del client object model Microsoft.SharePoint.Client.dll e Microsoft.SharePoint.Client.Runtime.dll):
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Console.WriteLine(&lt;span style="color: #A31515"&gt;"Client object model:"&lt;/span&gt;);
&lt;br /&gt;ClientContext context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ClientContext(&lt;span style="color: #A31515"&gt;"http://sharepoint2010/"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (context)
&lt;br /&gt;{
&lt;br /&gt;    List l = context.Web.Lists.GetByTitle(&lt;span style="color: #A31515"&gt;"Tasks"&lt;/span&gt;);
&lt;br /&gt;    ListItemCollection items = l.GetItems(CamlQuery.CreateAllItemsQuery());
&lt;br /&gt;
&lt;br /&gt;    context.Load(items, its =&gt; its.Include(i =&gt; i[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]));
&lt;br /&gt;    context.ExecuteQuery();
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt; (ListItem item &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; items)
&lt;br /&gt;    {
&lt;br /&gt;        Console.WriteLine(&lt;span style="color: #A31515"&gt;"{0}"&lt;/span&gt;, (DateTime)item[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]);
&lt;br /&gt;    }
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;Console.WriteLine(&lt;span style="color: #A31515"&gt;"Server object model:"&lt;/span&gt;);
&lt;br /&gt;SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://sharepoint2010/"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (site)
&lt;br /&gt;{
&lt;br /&gt;    SPWeb web = site.OpenWeb();
&lt;br /&gt;    SPList list = web.Lists[&lt;span style="color: #A31515"&gt;"Tasks"&lt;/span&gt;];
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt; (SPListItem item &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; list.GetItems(&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;))
&lt;br /&gt;    {
&lt;br /&gt;        Console.WriteLine(&lt;span style="color: #A31515"&gt;"{0}"&lt;/span&gt;, (DateTime)item[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Bene.. se eseguite questo codice su un qualsiasi sito SharePoint (creato con qualsiasi lingua, anche la stessa della vostra macchina client), sono sicuro che vi accorgerete anche voi delle diversità dei valori di tipo data e ora.
&lt;br /&gt;Se non ci credete, ecco qua uno screenshot:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/WrongDates.png" alt="Date non corrette utilizzando il Client Object Model di SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere, le prime 4 date sono diverse da quelle lette sulla stessa lista tramite il modello ad oggetti lato server. Lasciando perdere le ore (in quanto il mio campo di tipo "data e ora" permetteva all'utente di inserire solamente delle date), in questi 4 valori c’è una discrepanza di un giorno.
&lt;br /&gt;Li per li penso al bug (chissà come mai.. :), poi invece mi salta in mente il fatto che la mia applicazione viene eseguita sul client e che quindi è molto probabile che la lingua con cui vengono stampate queste date sia diversa da quella con cui è stato creato il sito SharePoint (o cmq da quella con cui è stata configurata la sezione "Regional settings"). Infatti, richiamando il metodo ToUniversalTime() della classe DateTime mi sono subito accorto che invece le date erano esattamente le stesse.
&lt;br /&gt;
&lt;br /&gt;Quindi il problema a questo punto era: "come posso far si che le mie date vengano visualizzate attraverso la stessa culture della mia applicazione client ?".
&lt;br /&gt;
&lt;br /&gt;Ho provato ad utilizzare il metodo ConvertToDateTime passando la medesima cultura presente all'interno della pagina "Regional Settings" del mio sito SharePoint, ma niente. Le date risultavano ancora diverse.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DateTime s = Convert.ToDateTime(((DateTime)item[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]), &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;Console.WriteLine(&lt;span style="color: #A31515"&gt;"{0}"&lt;/span&gt;, s);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Cerco un pò all'interno dell'SDK e trovo la fantastica classe Utility e il suo ancor più fantastico metodo FormatDateTime, che effettua la conversione del mio DateTime secondo il formato scelto all'interno dei "Regional Settings" del mio sito SharePoint 2010.
&lt;br /&gt;Applicandolo al mio codice, ecco che i valori delle mie date vengono visualizzati esattamente come all'interno dell'interfaccia del mio sito.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Console.WriteLine(&lt;span style="color: #A31515"&gt;"Client object model:"&lt;/span&gt;);
&lt;br /&gt;ClientContext context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ClientContext(&lt;span style="color: #A31515"&gt;"http://sharepoint2010/"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (context)
&lt;br /&gt;{
&lt;br /&gt;    Web web = context.Web;
&lt;br /&gt;    List l = web.Lists.GetByTitle(&lt;span style="color: #A31515"&gt;"Tasks"&lt;/span&gt;);
&lt;br /&gt;    ListItemCollection items = l.GetItems(CamlQuery.CreateAllItemsQuery());
&lt;br /&gt;
&lt;br /&gt;    context.Load(web, w =&gt; w.Language);
&lt;br /&gt;    context.Load(items, its =&gt; its.Include(i =&gt; i[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]));
&lt;br /&gt;    context.ExecuteQuery();
&lt;br /&gt;
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt; (ListItem item &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; items)
&lt;br /&gt;    {
&lt;br /&gt;        DateTime start = ((DateTime)item[&lt;span style="color: #A31515"&gt;"StartDate"&lt;/span&gt;]);
&lt;br /&gt;        ClientResult&lt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt;&gt; result = Utility.FormatDateTime(context, context.Web, start, DateTimeFormat.DateTime);
&lt;br /&gt;        context.ExecuteQuery();
&lt;br /&gt;        DateTime rightStart = Convert.ToDateTime(result.Value, &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; CultureInfo((&lt;span style="color: #0000FF"&gt;int&lt;/span&gt;)web.Language));
&lt;br /&gt;        Console.WriteLine(&lt;span style="color: #A31515"&gt;"{0}"&lt;/span&gt;, rightStart);
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;In pratica, &lt;b&gt;durante una normale query tramite il client object model di SharePoint 2010, le date vengono ritornate all'applicazione client in formato UTC e necessitano di essere convertite&lt;/b&gt;.
&lt;br /&gt;Ecco il risultato eseguendo il secondo listato (corretto) assieme al primo (scorretto).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/RightDates.png" alt="Date CORRETTE utilizzando il Client Object Model di SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Vi lascio anche i sorgenti, così potete provare con mano quanto vi ho detto (senza riscrivere l'applicazione da zero):
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/zip/ClientObjectModelDates.zip" title="Sorgenti per la gestione corretta delle date tramie il client object model di SharePoint 2010"&gt;ClientObjectModelDates.zip (37,4 Kb)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/IncorrectDatesTakenFromSharePoint2010ClientObjectModel.aspx" /><issued>2010-11-29T9:33:12+01:00</issued><modified>2010-11-29T9:33:12+01:00</modified></entry><entry><title>WPC 2010: 3 bei giorni !</title><id>/Blog/WCP2010Recap.aspx</id><created>2010-11-25T21:37:38+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/wpc.png" alt="WPC 2010" style="float: right; margin: 5px" /&gt;Eccomi qua.. di ritorno dai 3 giorni di &lt;a href="http://www.techdays-wpc.it/" title="WPC 2010" target="_blank"&gt;WPC&lt;/a&gt; passati ad Assago.
&lt;br /&gt;Non c'ero mai stato prima e vi assicuro che è stata veramente una bella esperienza !
&lt;br /&gt;Per chi se l'è persa, raccomando di prendersi del tempo per andarci il prossim'anno. Il motivo ? Semplice: potete incontrare delle persone fantastiche e preparatissime, pronte a parlare di tutte le ultime tecnologie, tecniche ed interessi che fanno parte del nostro lavoro.
&lt;br /&gt;Per chi c'era invece, mi auguro veramente che la pensiate come me.
&lt;br /&gt;
&lt;br /&gt;Sul sito potete trovare un pò di foto: &lt;a href="http://www.techdays-wpc.it/pics.aspx" title="Foto WPC TechDays 2010" target="_blank"&gt;http://www.techdays-wpc.it/pics.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Alla prossima !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/WPC.aspx" title="TAG: WPC"&gt;WPC&lt;/a&gt;] [&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/WCP2010Recap.aspx" /><issued>2010-11-25T21:37:38+01:00</issued><modified>2010-11-25T21:37:38+01:00</modified></entry><entry><title>Gestione delle eccezioni con il Client Object Model di SharePoint 2010</title><id>/Blog/ExceptionHandlingSharePoint2010ClientObjectModel.aspx</id><created>2010-11-20T17:7:21+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;A pochi giorni dalla &lt;a href="http://www.techdays-wpc.it/" title="Microsoft TechDays WPC" target="_blank"&gt;WPC&lt;/a&gt; è uscito un mio nuovo articolo su &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt; sempre riguardo il Client Object Model di SharePoint 2010.
&lt;br /&gt;Il quarto della serie, vede una breve introduzione sulla gestione delle eccezioni che possono essere scatenate da qualche chiamata al server SharePoint effettuata dalle nostre applicazioni client che utilizzando le classi del Client Object Model.
&lt;br /&gt;Una volta letto vedrete che è stata introdotta una particolare classe che ci permette di far gestire le eccezioni durante la computazione del nostro codice che viene effettuata lato server. Questo ci permette di ridurre al minimo le richieste dalle nostre applicazioni client e di poter eseguire delle operazioni in base alla presenza di un errore nel nostro codice senza dover rifare da zero una nuova richiesta La classe in questione è la classe ExceptionHandlingScope.
&lt;br /&gt;A mio avviso è una tecnica quantomeno da tenere presente durante lo sviluppo di applicazioni client che dialogano con SharePoint 2010 tramite le sue API client-side, sopratutto per quanto riguarda un discorso di performance.
&lt;br /&gt;
&lt;br /&gt;Vi lascio qua il link diretto all'articolo:
&lt;br /&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16" title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" target="_blank"&gt;http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete, potete anche scaricarvi i sorgenti.
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/zip/Dev4Side.SP2010.ClientExceptions.zip" title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" target="_blank"&gt;Dev4Side.SP2010.ClientExceptions.zip (32kb)&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ecco invece il riepilogo dei contenuti riguardo il Client Object Model presenti su SharePointCommunity.it:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" title="Introduzione alle Client-Side API di SharePoint 2010" target="_blank"&gt;Introduzione alle Client-Side API di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" title="Operazioni CRUD con il Client Object Model di SharePoint 2010" target="_blank"&gt;Operazioni CRUD con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15" title="Gestione di liste con il Client Object Model di SharePoint 2010" target="_blank"&gt;Gestione di liste con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=16" title="Gestione delle eccezioni con il Client Object Model di SharePoint 2010" target="_blank"&gt;Gestione delle eccezioni con il Client Object Model di SharePoint 2010&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt; 
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]
&lt;br /&gt;
&lt;br /&gt;</content><link rel="alternate" type="text/html" href="/Blog/ExceptionHandlingSharePoint2010ClientObjectModel.aspx" /><issued>2010-11-20T17:7:21+01:00</issued><modified>2010-11-20T17:7:21+01:00</modified></entry><entry><title>Rilasciate le librerie del Client Object Model di SharePoint 2010 per la ridistribuzione</title><id>/Blog/SharePointClientObjectModelRedistributableReleased.aspx</id><created>2010-11-19T9:46:51+01:00</created><content type="text/html" mode="escaped">Dal blog del team della documentazione di SharePoint l'&lt;a href="http://blogs.msdn.com/b/sharepointdeveloperdocs/archive/2010/11/18/sharepoint-client-object-model-redistributable-released.aspx" title="SharePoint Client Object Model Redistributable Released" target="_blank"&gt;annuncio&lt;/a&gt; del rilascio delle versioni ufficiali del Client Object Model di SharePoint 2010 per la ridistribuzione.
&lt;br /&gt;Sono esattamente le stesse librerie che possiamo trovare all'interno dell'installazione di default di SharePoint, che ora potete trovare anche on-line per lo sviluppo delle vostre applicazioni custom da eseguire lato client.
&lt;br /&gt;Nello specifico, sono stati rilasciati solamente gli assembly per lo sviluppo di applicazioni .NET o per la creazione di applicazioni Silverlight. I file .js per personalizzazioni ECMAScript all'interfaccia, sono stati lasciati volutamente fuori da questo download, in quando sono sempre referenziati all'interno delle master page di SharePoint 2010.
&lt;br /&gt;Per chi si è perso gli articoli usciti su &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt;, queste sono le librerie che potete scaricare:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft.SharePoint.Client.dll&lt;/li&gt;&lt;li&gt;Microsoft.SharePoint.Client.Runtime.dll&lt;/li&gt;&lt;li&gt;Microsoft.SharePoint.Client.Silverlight.dll&lt;/li&gt;&lt;li&gt;Microsoft.SharePoint.Client.Silverlight.Runtime.dll&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Il pacchetto di installazione vi copierà i file al seguente percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\SharePoint Client&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così che possiate poi aggiungere le corrette referenze all'interno dei vostri progetti.
&lt;br /&gt;Per il download, potete seguire questo link:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47" title="SharePoint Client Object Model Redistributable" target="_blank"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b4579045-b183-4ed4-bf61-dc2f0deabe47&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo inoltre che se venite alla &lt;a href="http://www.techdays-wpc.it/agenda.aspx" title="Microsoft Techdays WPC" target="_blank"&gt;WPC&lt;/a&gt; e se volete un'introduzione su tutto quello che è il modello ad oggetti client-side esposto da SharePoint 2010, terrò due sessioni il giorno 23 alle 14.00 e alle 17.15, rispettivamente presso la sala "Arancio" e "Nera" (le sale sono cambiate da poco).
&lt;br /&gt;Non potete mancare !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointClientObjectModelRedistributableReleased.aspx" /><issued>2010-11-19T9:46:51+01:00</issued><modified>2010-11-19T9:46:51+01:00</modified></entry><entry><title>Silverlight LOVES SharePoint 2010</title><id>/Blog/SilverlightLovesSharePoint2010.aspx</id><created>2010-11-15T13:5:24+01:00</created><content type="text/html" mode="escaped">In questo weekend ho finito di preparare le sessioni per la &lt;a href="http://www.techdays-wpc.it/" title="Microsoft Tech-Days WPC" target="_blank"&gt;WPC&lt;/a&gt;, conferenza Microsoft che si terrà qui a Milano nei giorni 23, 24 e 25 di novembre.
&lt;br /&gt;Sono piuttosto soddisfatto, soprattutto per la sessione su Silverlight in cui ho cercato di mantenere alta la quantità di demo live rispetto alle solite slide.
&lt;br /&gt;Il matrimonio sarà celebrato esattamente alle ore &lt;b&gt;17.15&lt;/b&gt; presso la &lt;b&gt;sala gialla&lt;/b&gt;.. ecco il vostro invito :)
&lt;br /&gt;
&lt;br /&gt;&lt;div id="silverlightControlHost"&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="480px" height="450px"&gt;&lt;param name="source" value="/ClientBin/SilverlightLovesSharePoint.xap"/&gt;&lt;param name="background" value="white" /&gt;&lt;param name="minRuntimeVersion" value="4.0.50826.0" /&gt;&lt;param name="autoUpgrade" value="true" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50826.0" style="text-decoration:none"&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&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/WPC.aspx" title="TAG: WPC"&gt;WPC&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SilverlightLovesSharePoint2010.aspx" /><issued>2010-11-15T13:5:24+01:00</issued><modified>2010-11-15T13:5:24+01:00</modified></entry><entry><title>Eventi gratuiti su SharePoint a Bologna</title><id>/Blog/EventiGratuitiSuSharePointBologna.aspx</id><created>2010-11-15T10:14:6+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;Ciao a tutti !
&lt;br /&gt;Per chi non lo sapesse, volevo ricordarvi che domani ci sono due eventi gratuiti organizzati da &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt; in collaborazione con Microsoft Italia, &lt;a href="http://www.ugiss.org/" title="UGISS" target="_blank"&gt;UGISS&lt;/a&gt;, e &lt;a href="http://dotdotnet.org/" title="DotDotNet" target="_blank"&gt;DotDotNet&lt;/a&gt;, la community dell'emilia romagna.
&lt;br /&gt;Io sarò alla parte per sviluppatori, quindi se venite non esitate a farvi riconoscere.
&lt;br /&gt;Per le rispettive agende, potete far riferimento a queste due pagine:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=10" title="Community Tour Developers - Bologna" target="_blank"&gt;Community Tour Developers - Bologna&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=9" title="Community Tour IT Pro - Bologna" target="_blank"&gt;Community Tour IT Pro - Bologna&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;A domani !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/EventiGratuitiSuSharePointBologna.aspx" /><issued>2010-11-15T10:14:6+01:00</issued><modified>2010-11-15T10:14:6+01:00</modified></entry><entry><title>MVP Open Days 2010</title><id>/Blog/MVPOpenDays2010.aspx</id><created>2010-11-9T9:21:10+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin-left: 10px; float: right" alt="Microsoft SharePoint MVP" src="http://www.peppedotnet.it/Images/mvp2.jpg" /&gt;Questo weekend sono stato per la prima volta agli MVP Open Days qui a Milano, due giornate di incontro per tutti gli MVP del territorio italiano, tenute presso la sede Microsoft di Segrate.
&lt;br /&gt;Purtroppo, sono potuto andare solamente il primo giorno (compreso di cena in discoteca :) ma vi giuro che è stata una bellissima esperienza.. ho conosciuto questa "famigghia" molto particolare, composta da tantissimi professionisti di livello, in cui sono stato accolto veramente con amore (mi son sentito pure chiamare "picciotto").
&lt;br /&gt;Mi son dovuto presentare (e questo è rigorosamente sotto NDA, sopratutto su questo blog), ci sono stati ospiti d'eccellenza venuti apposta dall'estero, qualche gadget, delle sessioni tecniche che finivano sempre a metà per colpa del numero improponibile di domande che avevano tutti e un sacco di chicchierate tecniche, che la maggior parte delle volte mi lasciavan veramente di stucco.
&lt;br /&gt;Per tutto questo, un grazie doveroso va a (Don) &lt;a href="http://blogs.technet.com/b/alead_msft/" titlte="Alessandro Teglia" target="_blank"&gt;Ale&lt;/a&gt;. Il capo della famiglia, che si è preoccupato di organizzare tutto.
&lt;br /&gt;Poi, a tutti gli altri ! Che è stato veramente un piacere conoscervi o vederci dal vivo.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/MVP.aspx" title="TAG: MVP"&gt;MVP&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MVPOpenDays2010.aspx" /><issued>2010-11-9T9:21:10+01:00</issued><modified>2010-11-9T9:21:10+01:00</modified></entry><entry><title>Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente</title><id>/Blog/EnableOrDisableASharePoint2010RibbonButton.aspx</id><created>2010-11-8T9:25:37+01:00</created><content type="text/html" mode="escaped">Se decidiamo di personalizzare la barra dei Ribbon, inserendo alcuni controlli custom in qualche particolare tab e gruppo, abbiamo anche la possibilità di decidere quando tale Ribbon dovrà o meno essere abilitato. Chiaramente, quello che verrà abilitato (o disabilitato) sarà il comando che l'utente finale può eseguire facendo click sul Ribbon; poi, l'interfaccia di SharePoint 2010 si preoccuperà anche di renderizzare il Ribbon in maniera da far capire a colpo d'occhio che non è possibile eseguire operazioni sul contentuo della pagina a partire da quello specifico controllo.
&lt;br /&gt;Ad effettuare il controllo vero e proprio invece, sarà una funzione Javascript che dovrà essere inserita all'interno della definizione del relativo comando del Ribbon. Nello specifico, questa funzione dovrà essere inserita allÂ’interno dellÂ’attributo "EnableScript" proprio dell'elemento "CommandUIHandler" e dovrà ritornare un valore booleano, in modo che lÂ’interfaccia di SharePoint 2010 riesca a capire quando abilitare il controllo e quando invece disabilitarlo.
&lt;br /&gt;Per fare in modo di abilitare o disabilitare il controllo del nostro Ribbon in base alla selezione da parte dell'utente sugli elementi di una lista, dobbiamo utilizzare il Client Object Model per ECMAScript offerto da SharePoint 2010 e le sue classi per la selezione.
&lt;br /&gt;Vediamo come:
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="List"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hello world ribbon"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld.Button"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Hello world"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt;
&lt;br /&gt;                  Image32by32&lt;span style='color:#0000FF'&gt;="/_layouts/images/PeppeDotNet/HelloWorld32by32.png"&lt;/span&gt;
&lt;br /&gt;                  Sequence&lt;span style='color:#0000FF'&gt;="31"&lt;/span&gt;
&lt;br /&gt;                  Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIHandlers&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                          CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Action for only one item !');"&lt;/span&gt;
&lt;br /&gt;                          EnabledScript&lt;span style='color:#0000FF'&gt;="javascript:SP.ListOperation.Selection.getSelectedItems().length == 1;"&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;CommandUIHandlers&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Nell'esempio, abbiamo deciso che il nostro Ribbon di prova dovrà essere abilitato solamente quando l'utente ha selezionato un singolo elemento. Nel &lt;a href="http://blogs.msdn.com/b/sharepoint/archive/2010/02/15/enabling-a-button-on-the-ribbon-based-on-selection.aspx" title="Enabling a Button on the Ribbon Based on Selection" target="_blank"&gt;blog del team di SharePoint&lt;/a&gt; trovate un'altra implementazione di questo comportamento, disponibile attraverso l'uso della funzione CountDictionary().
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_10.jpg" alt="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente" /&gt;
&lt;br /&gt; 
&lt;br /&gt;Nel caso in cui lÂ’utente scelga di selezionare più elementi o nel caso in cui non ne abbia scelto ancora nessuno, il pulsante risulterà qunidi disabilitato.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_09.jpg" alt="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente" /&gt;
&lt;br /&gt; 
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_11.jpg" alt="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questo ci permette di effettuare operazioni su singoli elementi di una lista SharePoint.
&lt;br /&gt;Allo stesso modo, se volessimo invece effettuare operazioni su più di un elemento selezionato da una lista, dovremmo scrivere il codice che controlli che la selezione dell'utente contenga più di un singolo elemento (l'esatto contrario di quanto scritto prima).
&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                  CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert(Action for multiple items !');"&lt;/span&gt;
&lt;br /&gt;                  EnabledScript="javascript:SP.ListOperation.Selection.getSelectedItems().length &lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt; 1;"/&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Questo ci permettere di effettuare la medesima operazione su più documenti (o elementi) scelti dall'utente. Infatti, la funzione SP.ListOperation.Selection.getSelectedItems(), propria del modello ad oggetti client-side per ECMAScript (di cui sicuramente vedremo un'introduzione), ritornerà una collezione di elementi contenente tutti gli oggetti che sono stati selezionati dallÂ’utente, compresi di identificativi, utili ad effettuare poi le nostre operazioni personalizzate su di essi.
&lt;br /&gt;Nel caso di una selezione singola, quella funzione ritornerà una collezione contenente un solo elemento.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_12.jpg" alt="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente" /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_13.jpg" alt="Abilitare o disabilitare un controllo di un Ribbon in base alla selezione dell'utente" /&gt;
&lt;br /&gt;
&lt;br /&gt;In questi esempi, abbiamo utilizzato le classi esposte dal modello ad oggetti client-side per ECMAScript per abilitare o disabilitare il nostro controllo Ribbon. Volendo, abbiamo la possibilità di fare qualsiasi altro tipo di calcolo all'interno del nostro script, utilizzando una o più funzioni, e ricordandoci sempre che la funzione principale deve ritornare un valore booleano.
&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                  CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Action only for work-hours !');"&lt;/span&gt;
&lt;br /&gt;                  EnabledScript&lt;span style='color:#0000FF'&gt;="javascript:function abilitaRibbon() {
&lt;br /&gt;                                    var ora = ritornaOraCorrente();
&lt;br /&gt;                                    return (ora &amp;gt;= 9 &amp;amp;&amp;amp; ora &amp;lt;= 18);
&lt;br /&gt;                                  };
&lt;br /&gt;                                  function ritornaOraCorrente()
&lt;br /&gt;                                  {
&lt;br /&gt;                                    var d = new Date();
&lt;br /&gt;                                    return d.getHours();
&lt;br /&gt;                                  }
&lt;br /&gt;                                  abilitaRibbon();"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Nel prossimo post vedremo come spostare all'esterno del file XML di definizione del Ribbon personalizzato (quindi all'interno di un file .js specifico), tutto il codice Javascript utilizzato sia per l'abilitazione o la disabilitazione del controllo, sia per l'azione vera e propria da compiare dopo un click da parte dellÂ’utente sul controllo stesso.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/EnableOrDisableASharePoint2010RibbonButton.aspx" /><issued>2010-11-8T9:25:37+01:00</issued><modified>2010-11-8T9:25:37+01:00</modified></entry><entry><title>Le icone di un controllo personalizzato all'interno della barra dei Ribbon</title><id>/Blog/SharePoint2010RibbonControlsImages.aspx</id><created>2010-11-5T9:29:25+01:00</created><content type="text/html" mode="escaped">Nel &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010RibbonTemplateAlias.aspx" title="Template di un controllo Ribbon posto all'interno di un gruppo pre-esistente" target="_blank"&gt;precedente post&lt;/a&gt; abbiamo visto com'è possibile personalizzare la grandezza di un controllo Ribbon all'interno di un tab e un gruppo già presenti alla barra dei Ribbon. Abbiamo identificato due template principali, rispettivamente definiti dagli alias "o1" e "o2", e abbiamo visto che in base alla scelta di un template al posto dell'altro, vengono visualizzate differenti immagini a rappresentare il nostro controllo.
&lt;br /&gt;Nel dettaglio, certi tipi di controlli possono essere rappresentati da due differenti immagini, ovviamente di diverse dimensioni:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Immagine 32 x 32: il cui URL va definito all'interno dell’attributo "Image32by32"&lt;/li&gt;&lt;li&gt;Immagine 16 x 16: il cui URL va definito all'interno dell’attributo "Image16by16"&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;I controlli che offrono la possibilità della visualizzazioni di questi due differenti formati di immagine sono i seguenti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Button&lt;/li&gt;&lt;li&gt;SplitButton&lt;/li&gt;&lt;li&gt;ToggleButton&lt;/li&gt;&lt;li&gt;FlyoutAnchor&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Su qualsiasi di queste due immagini, possiamo poi definire una serie ulteriore di attributi che ne modificano la visualizzazione. Eccoli nel dettaglio:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Image32by32Class / Image16by16Class: il nome della classe CSS che verrà applicata all'immagine.&lt;/li&gt;&lt;li&gt;Image32by32Left / Image16by16Left: un valore negativo che rappresenta l'offset dal margine sinistro con cui deve essere renderizzata l'immagine.&lt;/li&gt;&lt;li&gt;Image32by32Top / Image16by16Top: un valore negativo che rappresenta l'offset dal margine alto con cui deve essere renderizzata l'immagine.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Gli ultimi due attributi vengono utilizzati da SharePoint stesso per renderizzare parti di immagini contenenti più icone utili a differenti controlli.
&lt;br /&gt;Altri controlli che possono essere configurati in modo da visualizzare un'immagine all'interno della barra dei ribbon sono il controllo GalleryButton (tramite il suo attributo "Image") e il controllo Label (che contiene solamente l'attributo Image16by16).
&lt;br /&gt;
&lt;br /&gt;Se volete maggiori informazioni riguardo lo schema di tutti i controlli che potete inserire all'interno della barra dei Ribbon, potete consultare la documentazione on-line a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff458369.aspx" title="Server Ribbon Schema" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ff458369.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RibbonControlsImages.aspx" /><issued>2010-11-5T9:29:25+01:00</issued><modified>2010-11-5T9:29:25+01:00</modified></entry><entry><title>Template di un controllo Ribbon posto all'interno di un gruppo pre-esistente</title><id>/Blog/SharePoint2010RibbonTemplateAlias.aspx</id><created>2010-11-2T9:24:44+01:00</created><content type="text/html" mode="escaped">Durante la customizzazione della barra dei ribbon, oltre a dover specificare il tab e il gruppo in cui i controlli relativi al nostro Ribbon personalizzato dovranno essere visualizzati (come abbiamo visto nel &lt;a href="http://www.peppedotnet.it/Blog/HowToWriteARibbonInSharePoint2010.aspx" target="_blank" title="Il nostro primo Ribbon su SharePoint 2010"&gt;primo post&lt;/a&gt; di questa serie dedicata ai Ribbon), dobbiamo specificare anche il modo in cui questi controlli dovranno essere renderizzati.
&lt;br /&gt;Per farlo, ogni controllo che possiamo inserire all'interno dell'estensione all'interfaccia di SharePoint che stiamo sviluppando, espone l'attributo &lt;b&gt;TemplateAlias&lt;/b&gt;. Questo attributo serve a specificare l'identificativo del template che deve essere utilizzato per dare una larghezza ed una grandezza al controllo in questione, quando un particolare template è stato applicato al gruppo in cui abbiamo deciso di inserire il nostro Ribbon personalizzato.
&lt;br /&gt;Nel primo esempio, abbiamo applicato al bottone il template con alias &lt;b&gt;"o1"&lt;/b&gt;. Questo alias permette al sistema di rendering della barra dei Ribbon di SharePoint 2010 di dare larghezza e altezza massime al bottone. Inoltre, applica al bottone stesso l'immagine il cui URL è definito all'interno dell'attributo "Image32by32".
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="List"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hello world ribbon"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld.Button"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Hello world"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt;
&lt;br /&gt;                  Image32by32&lt;span style='color:#0000FF'&gt;="/_layouts/images/PeppeDotNet/HelloWorld32by32.png"&lt;/span&gt;
&lt;br /&gt;                  Sequence&lt;span style='color:#0000FF'&gt;="31"&lt;/span&gt;
&lt;br /&gt;                  Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIHandlers&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                          CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Hello world from BIG Ribbon !');"&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;CommandUIHandlers&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Il risultato di un bottone con l'attributo TemplateAlias valorizzato a "o1" lo conosciamo già.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_07.jpg" alt="AliasTemplate o1" /&gt;
&lt;br /&gt; 
&lt;br /&gt;Ma se volessimo invece visualizzare il nostro Ribbon personalizzato nel formato un pò più piccolo, dobbiamo specificare un nuovo valore per l'attributo TemplateAlias. Questo è il valore &lt;b&gt;"o2"&lt;/b&gt;, che specifica la dimensione massima del testo, la posizione e l'utilizzo dell'immagine il cui URL è definito all'interno dell'attributo "Image16by16".
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="List"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hello world ribbon"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld.Button"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Hello world"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o2"&lt;/span&gt;
&lt;br /&gt;                  Image16by16&lt;span style='color:#0000FF'&gt;="/_layouts/images/PeppeDotNet/HelloWorld16by16.png"&lt;/span&gt;
&lt;br /&gt;                  Sequence&lt;span style='color:#0000FF'&gt;="31"&lt;/span&gt;
&lt;br /&gt;                  Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIHandlers&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                          CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Hello world from LITTLE Ribbon !');"&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;CommandUIHandlers&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una volta fatto deploy, vedremo il nostro bottone personalizzato apparire nel secondo gruppo di controlli (sempre all'inteno del gruppo "Manage" proprio del tab "Documents"), cioè assieme a tutti quei controlli con altezza minima. Volendo poi spostarlo prima, in mezzo o dopo gli altri controlli già presenti, possiamo giocare con i valori dell'attributo "Sequence" (come spiegato in &lt;a href="http://www.peppedotnet.it/Blog/ControlPositionOnSharePoint2010RibbonBar.aspx" title="Gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010" target="_blank"&gt;questo post&lt;/a&gt;).
&lt;br /&gt; 
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_08.jpg" alt="AliasTemplate o2" /&gt;
&lt;br /&gt;
&lt;br /&gt;Gli alias di template visti fin'ora ("o1" e "o2") sono validi fin quando vogliamo inserire un controllo all'interno di uno dei gruppi già esistenti nella barra dei Ribbon di SharePoint 2010. Se decidiamo invece di creare dei tab e dei gruppi personalizzati, possiamo allora definire i nostri template personalizzati per la visualizzazione dei controlli.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010RibbonTemplateAlias.aspx" /><issued>2010-11-2T9:24:44+01:00</issued><modified>2010-11-2T9:24:44+01:00</modified></entry><entry><title>Gestione della posizione dei controlli inseriti nella barra dei Ribbon di SharePoint 2010</title><id>/Blog/ControlPositionOnSharePoint2010RibbonBar.aspx</id><created>2010-10-31T19:58:19+01:00</created><content type="text/html" mode="escaped">Come abbiamo visto dal nostro &lt;a href="http://www.peppedotnet.it/Blog/HowToWriteARibbonInSharePoint2010.aspx" title="Il nostro primo Ribbon per SharePoint 2010" target="_blank"&gt;primo esempio&lt;/a&gt;, possiamo aggiungere i nostri Ribbon personalizzati ad uno specifico tab ed uno specifico gruppo, specificando il corretto valore all'interno dell'attributo "Location". 
&lt;br /&gt;Se non definiamo nient'altro, gli elementi facenti parte del nostro Ribbon (bottoni, checkbox, ecc...) verranno visualizzati come ultimi nel gruppo in cui il Ribbon è stato inserito.
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 15px; font-style: italic; padding 3px;"&gt;&lt;span style="text-decoration: underline"&gt;Nota:&lt;/span&gt; In questo senso, è necessario però definire bene il concetto di "ultimo", in quanto questi controlli saranno visualizzati dopo tutti quelli definiti con il medesimo "TemplateAlias" (nei prossimi post daremo una spiegazione anche all'utilità di questo attributo).&lt;/div&gt;
&lt;br /&gt;Come possiamo vedere in figura, il gruppo "Manage" del tab "Documents" (proprio di ogni Document Library appartenente ad un sito SharePoint 2010), vede già la presenza di due controlli con l’attributo "TemplateAlias" valorizzato a "o1". Questi sono i controlli per la visualizzazione delle proprietà di un documento o per la loro modifica.
&lt;br /&gt;L'esempio visto nel precedente post infatti, posiziona il nostro Ribbon personalizzato con etichetta "Hello world", subito dopo questi due.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_05.jpg" alt="Posizionamento di un controllo nella barra dei Ribbon di SharePoint 2010" /&gt;
&lt;br /&gt; 
&lt;br /&gt;Se vogliamo invece spostare il nostro bottone personalizzato prima di tutti gli altri (o in qualsiasi altra posizione), dobbiamo dare un valore intero all'attributo "Sequence" del controllo che vogliamo posizionare.
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="101"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="List"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hello world ribbon"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld.Button"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Hello world"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt;
&lt;br /&gt;                  Sequence&lt;span style='color:#0000FF'&gt;="1"&lt;/span&gt;
&lt;br /&gt;                  Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIHandlers&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt; 
&lt;br /&gt;                          CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Hello world from Ribbon !');"&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;CommandUIHandlers&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così, scegliendo di valorizzare tale attributo con il valore &lt;b&gt;1&lt;/b&gt; (o comunque un numero &lt;span style="text-decoration: underline"&gt;minore di 10&lt;/span&gt;), abbiamo deciso che il nostro bottone custom deve essere renderizzato come primo all'interno del gruppo "Manage" del tab "Documents".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_04.jpg" alt="Posizionamento di un controllo nella barra dei Ribbon di SharePoint 2010" /&gt;
&lt;br /&gt; 
&lt;br /&gt;Specificando invece il valore &lt;b&gt;11&lt;/b&gt; (quindi &lt;span style="text-decoration: underline"&gt;maggiore di 10 e minore di 20&lt;/span&gt;), il nostro Ribbon custom verrà posizionato tra il controllo di visualizzazione delle proprietà e quello di modifica.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_06.jpg" alt="Posizionamento di un controllo nella barra dei Ribbon di SharePoint 2010" /&gt;
&lt;br /&gt; 
&lt;br /&gt;Questo perchè ogni Ribbon già presente nella barra, ha un valore dell'attributo "Sequence" che parte da 10 (per il primo controllo da sinistra) e va avanti di 10 in 10 per ogni controllo successivo.
&lt;br /&gt;Nel nostro esempio, i controlli presenti all'interno del gruppo "Manage" del tab "Documents" hanno i seguenti valori per il campo "Sequence":
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;View properties - 10&lt;/li&gt;&lt;li&gt;Edit properties - 20&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Per visualizzare i corretti valori di ognuno dei controlli presenti all'interno della barra dei Ribbon e del gruppo specifico che abbiamo scelto per la visualizzazione della nostra personalizzazione all'interfaccia di SharePoint 2010, possiamo spulciare il file di definizione &lt;b&gt;"CMDUI.XML"&lt;/b&gt; presente all'interno del percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\XML&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ecco infatti, come sono definiti i due controlli in questione:
&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.ViewProperties"&lt;/span&gt;
&lt;br /&gt;        Sequence&lt;span style='color:#0000FF'&gt;="10"&lt;/span&gt;
&lt;br /&gt;        ...
&lt;br /&gt;        TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.EditProperties"&lt;/span&gt;
&lt;br /&gt;        Sequence&lt;span style='color:#0000FF'&gt;="20"&lt;/span&gt;
&lt;br /&gt;        ...
&lt;br /&gt;        TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se avete famigliarità con le custom action introdotte in WSS 3.0/MOSS 2007, vi sarete sicuramente accorti che il concetto di sequenza della visualizzazione delle azioni è esattamente il medesimo, con l'unica differenza che in questo specifico caso viene applicato alla barra dei Ribbon e non ai vari menu contestuali presenti all'interno dell'interfaccia di SharePoint.
&lt;br /&gt;Nel prossimo post vedremo invece quali sono i template che abbiamo a disposizione per il rendering di un controllo posto all'interno di un gruppo già presente nella barra dei Ribbon di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ControlPositionOnSharePoint2010RibbonBar.aspx" /><issued>2010-10-31T19:58:19+01:00</issued><modified>2010-10-31T19:58:19+01:00</modified></entry><entry><title>Il nostro primo Ribbon per SharePoint 2010</title><id>/Blog/HowToWriteARibbonInSharePoint2010.aspx</id><created>2010-10-27T17:24:25+01:00</created><content type="text/html" mode="escaped">La customizzazione dell'interfaccia di SharePoint 2010 può ritornarci molto utile per poter effettuare operazioni su liste ed elementi o per estendere il normale comportamento di SharePoint in modo da aggiungere funzionalità personalizzate, utili alle nostre applicazioni.
&lt;br /&gt;Una delle personalizzazioni che possiamo fare è lo sviluppo di un Ribbon personalizzato da poter aggiungere alla barra dei Ribbon presente nel layout di default della nuova versione di SharePoint.
&lt;br /&gt;Innanzitutto, è molto importante sapere che risulta una best practices utilizzare i Ribbon per tutte quelle operazioni che in MOSS 2007/WSS 3.0 abbiamo fruito ai nostri utenti attraverso le custom action. In generale poi, ci viene utile sviluppare un Ribbon se vogliamo fare operazioni su liste e singoli o multipli elementi di liste.
&lt;br /&gt;
&lt;br /&gt;Detto questo, per la definizione di un Ribbon all'interno di Visual Studio 2010 dobbiamo creare un progetto di tipo "Empty SharePoint Project" e scegliere di aggiungere un nuovo elemento di tipo "Empty element".
&lt;br /&gt;&lt;br /&gt;
&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_01.jpg" alt="Empty element" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questa tipologia di template contiene un file xml vuoto all'interno del quale possiamo procedere con la definizione del nostro Ribbon. Come vi dicevo, il legame tra un Ribbon e le custom action che abbiamo conosciuto in MOSS 2007 è molto importante, infatti per la definizione del nostro primo Ribbon personalizzato utilizziamo comunque il tag "CustomAction".
&lt;br /&gt;Ma vediamo subito l'esempio, che vale sicuramente più di mille parole.
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;Elements&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/"&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;CustomAction&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                Title&lt;span style='color:#0000FF'&gt;="Hello World"&lt;/span&gt;
&lt;br /&gt;                Location&lt;span style='color:#0000FF'&gt;="CommandUI.Ribbon"&lt;/span&gt;
&lt;br /&gt;                RegistrationType&lt;span style='color:#0000FF'&gt;="List"&lt;/span&gt;
&lt;br /&gt;                RegistrationId&lt;span style='color:#0000FF'&gt;="101"&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;CommandUIExtension&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;CommandUIDefinitions&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;CommandUIDefinition&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Location&lt;span style='color:#0000FF'&gt;="Ribbon.Documents.Manage.Controls._children"&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;Button&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Id&lt;span style='color:#0000FF'&gt;="Ribbon.HelloWorld"&lt;/span&gt;
&lt;br /&gt;                  TemplateAlias&lt;span style='color:#0000FF'&gt;="o1"&lt;/span&gt;
&lt;br /&gt;                  Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                  LabelText&lt;span style='color:#0000FF'&gt;="Hello world"&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;CommandUIDefinition&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;CommandUIDefinitions&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;CommandUIHandlers&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;CommandUIHandler&lt;/span&gt;&lt;span style='color:#FF0000'&gt; Command&lt;span style='color:#0000FF'&gt;="HelloWorld"&lt;/span&gt;
&lt;br /&gt;                          CommandAction&lt;span style='color:#0000FF'&gt;="javascript:alert('Hello world from ribbon !"&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;CommandUIHandlers&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;CommandUIExtension&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;CustomAction&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;Elements&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Come potete vedere, proprio come le custom action della precedente versione di SharePoint, possiamo scegliere di inserire il nostro Ribbon all'interno della relativa barra (tramite l'attributo "Location"), il contesto in cui il nostro Ribbon dovrà apparire (attraverso gli attributi "RegistrationType" e "RegistrationId") e, novità rispetto alla vecchia versione, possiamo definire quale dovrà essere l'estensione all'interfaccia che il nostro Ribbon andrà a rappresentare.
&lt;br /&gt;
&lt;br /&gt;L'estensione non è altro che un singolo controllo o una serie di controlli (nel nostro esempio un semplice bottone) che decidiamo che dovranno essere visualizzati all'interno della barra dei Ribbon, in uno dei vari tab a disposizione e che forniscano delle azioni personalizzate agli utenti finali.
&lt;br /&gt;Nell'esempio, ho scelto di posizione la mia estensione all'interno del tab "Douments" presente in tutte le Document Library di SharePoint 2010 e all'interno del gruppo "Manage". Questa scelta viene specificata all'interno dell'attributo "Location" proprio dell'elemento "CommandUIDefinition" che rappresenta la mia estensione.
&lt;br /&gt;&lt;br /&gt;
&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_02.jpg" alt="Hello world ribbon" /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;img src="http://www.peppedotnet.it/Images/2010/HelloWorldRibbon_03.jpg" alt="Hello world ribbon action" /&gt;
&lt;br /&gt;
&lt;br /&gt;In generale, per inserire i nostri Ribbon all'interno dei vari tab e dei vari gruppi, vale la seguente regola:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Ribbon.[Tab].[Group].Controls._children&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete la lista di tutti gli identificativi dei tab e dei gruppi che avete a disposizione, potete andare all'interno della documentazione a questo indirizzo:
&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee537543.aspx" target="_blank" title="Default Custom Action Locations and IDs"&gt;http://msdn.microsoft.com/en-us/library/ee537543.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Poi, ad ogni controllo (bottone, checkbox o altro che sia..) presente all'interno della nostra estensione all'interfaccia di SharePoint, possiamo legare uno specifico comando. Questo comando sarà una o più istruzioni JavaScript che abbiamo la possibilità di definire all'interno dell'attributo "CommandAction" dell'elemento "CommandUIHandler", utile a definire appunto il comportamento che dovrà avere il nostro ribbon a fronte di un'operazione da parte dell'utente su di esso.
&lt;br /&gt;
&lt;br /&gt;Non mi dilungo di più perchè di cose da dire ce ne sono davvero tante e dovrei riprenderle tutte nei prossimi post o in qualche articolo pubblicato da &lt;a href="http://www.sharepointcommunity.it" target="_blank"&gt;SharePointCommunity&lt;/a&gt;.
&lt;br /&gt;Vi ricordo, che se volete un template di progetto già fatto per la scrittura di Ribbon, lo potete trovare all'interno della Code Gallery di Microsoft a questo indirizzo: &lt;a href="http://code.msdn.microsoft.com/vsixforsp" title="Microsoft Code Gallery . Ribbon Project" target="_blank"&gt;http://code.msdn.microsoft.com/vsixforsp&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToWriteARibbonInSharePoint2010.aspx" /><issued>2010-10-27T17:24:25+01:00</issued><modified>2010-10-27T17:24:25+01:00</modified></entry><entry><title>Errore: &quot;'b' is null or not an object&quot; utilizzando l'ECMAscript client object model di SharePoint 2010</title><id>/Blog/ErrorBIsNullOrNotAnObjectEcmaScriptSharePoint2010.aspx</id><created>2010-10-24T14:39:59+01:00</created><content type="text/html" mode="escaped">In queste ultime due settimane ho lavorato tanto con il Client Object Model per ECMAScript, legato sopratutto alle operazioni che l'utente finale può fare tramite la barra dei Ribbon. Spero di riuscire a fare un pò di contenuti per il blog e per &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt; a riguardo, perchè l'UI Framework di SharePoint 2010 è veramente carino.
&lt;br /&gt;Comunque, durante queste prove mi sono scontrato con questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;'b' is null or not an object&lt;/div&gt;
&lt;br /&gt;Questo veniva scatenato quando cercavo di recuperare delle proprietà di un elemento selezionato, subito dopo aver richiamato il metodo executeQueryAsync().
&lt;br /&gt;Questo metodo vuole la specifica di due delegati per gestire il successo della chiamata lato server o un'eventuale errore. 
&lt;br /&gt;Nel mio caso, lo script non arriva ne al primo gestore ne al secondo, ma veniva fermato durante il callback.
&lt;br /&gt;Ecco il codice &lt;span style="color: red; font-weight: bold;"&gt;ERRATO&lt;/span&gt; che avevo scritto:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;var selectedItem;
&lt;br /&gt;
&lt;br /&gt;function initializeScript() { 
&lt;br /&gt;   var items = SP.ListOperation.Selection.getSelectedItems(); 
&lt;br /&gt;   var context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SP.ClientContext.get_current();
&lt;br /&gt;   var currentList = context.get_web().get_lists().getById(SP.ListOperation.Selection.getSelectedList()); 
&lt;br /&gt;   selectedItem = currentList.getItemById(items[0].id); 
&lt;br /&gt;   context.load(selectedItem);
&lt;br /&gt;   context.executeQueryAsync(Function.createDelegate(&lt;span style="color: #0000FF"&gt;this&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.onSuccessMethod), Function.createDelegate(&lt;span style="color: #0000FF"&gt;this&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;this&lt;/span&gt;.onFailureMethod));
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;function onSuccessMethod(sender, args) { 
&lt;br /&gt;   alert('success');
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;function onFailureMethod(sender, args) {
&lt;br /&gt;   alert('fail');
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dove sta l'errore ? L'errore sta nella specifica del nome dei due delegati. 
&lt;br /&gt;Nel mio script, faccio riferimento ai metodi onSuccessMethod e onFailureMethod utilizzando la parola chiave "this". Ecco, questo script funzionerebbe se lo estraessi dalla funzione "initializeScript". Essendo invece all'interno di tale funzione, la parola chiave "this" manda in errore il callback perchè così non vengono trovati i due delagati.
&lt;br /&gt;Togliendo la parole chiave "this", il meccanismo di callback sa quali sono i metodi che devono gestire gli eventi di successo o errore e tutti ritorna così a funzionare.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;var selectedItem;
&lt;br /&gt;
&lt;br /&gt;function initializeScript() { 
&lt;br /&gt;   var items = SP.ListOperation.Selection.getSelectedItems(); 
&lt;br /&gt;   var context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SP.ClientContext.get_current();
&lt;br /&gt;   var currentList = context.get_web().get_lists().getById(SP.ListOperation.Selection.getSelectedList()); 
&lt;br /&gt;   selectedItem = currentList.getItemById(items[0].id); 
&lt;br /&gt;   context.load(selectedItem);
&lt;br /&gt;   &lt;span style="color: #008200"&gt;//context.executeQueryAsync(Function.createDelegate(this, this.onSuccessMethod), Function.createDelegate(this, this.onFailureMethod));&lt;/span&gt;
   context.executeQueryAsync(Function.createDelegate(&lt;span style="color: #0000FF"&gt;this&lt;/span&gt;, onSuccessMethod), Function.createDelegate(&lt;span style="color: #0000FF"&gt;this&lt;/span&gt;, onFailureMethod));
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;function onSuccessMethod(sender, args) { 
&lt;br /&gt;   alert('success');
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;function onFailureMethod(sender, args) {
&lt;br /&gt;   alert('fail');
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Quindi, se capita anche a voi questo errore, sappiate che i nomi dei due delegati che gestiranno il callback dovranno essere scritti senza errori.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/ECMAScript.aspx" title="TAG: ECMAScript"&gt;ECMAScript&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/JavaScript.aspx" title="TAG: JavaScript"&gt;JavaScript&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorBIsNullOrNotAnObjectEcmaScriptSharePoint2010.aspx" /><issued>2010-10-24T14:39:59+01:00</issued><modified>2010-10-24T14:39:59+01:00</modified></entry><entry><title>Errore &quot;The local SharePoint server is not available&quot; sul deploy da Visual Studio 2010</title><id>/Blog/ErroreTheLocalSharePointServerIsNotAvailable.aspx</id><created>2010-10-16T16:39:54+01:00</created><content type="text/html" mode="escaped">Se vi capita di fare deployment delle vostre soluzioni SharePoint per la prima volta su una nuova farm di sviluppo, è possibile che Visual Studio 2010 decida di bloccare l'operazione di deploy e ritornarvi il seguente errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Error occurred in deployment step 'Recycle IIS Application Pool': The local SharePoint server is not available. Check that the server is running and connected to the SharePoint farm.&lt;/div&gt;
&lt;br /&gt;Ecco, tale errore non vi permette di fare deployment delle vostre soluzioni (anche se correttamente compilate) perchè l'utente con cui avete fatto logon sulla macchina SharePoint e con il quale avete avviato Visual Studio 2010 non ha i permessi sui seguenti database:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SharePoint_Config&lt;/li&gt;&lt;li&gt;SharePoint_AdminContent_[guid]&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Fatto questo, se provate subito ad effettuare il deploy della soluzione su una specifica web application SharePoint 2010, vi troverete questo secondo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px;"&gt;Error occurred in deployment step 'Recycle IIS Application Pool': Cannot connect to the SharePoint site: http://YOUR_SITE_NAME/. Make sure that this is a valid URL and the SharePoint site is running on the local computer. If you moved this project to a new computer or if the URL of the SharePoint site has changed since you created the project, update the Site URL property of the project.&lt;/div&gt;
&lt;br /&gt;Ne abbiamo &lt;a href="http://www.peppedotnet.it/Blog/ErrorOccurredInDeploymentStepRecycleIISApplicationPool.aspx" title="Error occurred in deployment step Recycle IIS Application Pool" target="_blank"&gt;già parlato&lt;/a&gt; di questo errore, in quanto può esser scatenato anche quando spostate manualmente un progetto da una macchina SharePoint ad un'altra.
&lt;br /&gt;In questo caso, è necessario che vi fate dare i permessi sul &lt;b&gt;content database&lt;/b&gt; legato alla web application in cui state facendo deploy.
&lt;br /&gt;
&lt;br /&gt;Detto questo, è vero che solitamente per attività di sviluppo si creano macchine virtuali ad hoc dove l'utente corrente è amministratore della macchina, ma è anche vero che vi può capitare di dover sviluppare su server che non gestite direttamente e in cui accedete con la vostra normale utenza di dominio.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&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/ErroreTheLocalSharePointServerIsNotAvailable.aspx" /><issued>2010-10-16T16:39:54+01:00</issued><modified>2010-10-16T16:39:54+01:00</modified></entry><entry><title>Come inserire una site column ad un content type tramite l'object model di SharePoint</title><id>/Blog/FunctionalityIsUnavailableForFieldCollectionsNotAssociatedWithAList.aspx</id><created>2010-10-16T11:47:35+01:00</created><content type="text/html" mode="escaped">Utilizzando il modello ad oggetti lato server di SharePoint e provando a maneggare le classi SPField e SPContentType, possiamo avere la necessità di creare una site column ed attaccarla poi ad un content type esistente all'interno della nostra site collection (per la creazione di un content type tramite modello ad oggetti, vi rimando a &lt;a href="http://www.peppedotnet.it/Blog/CreateCustomContentTypeProgrammatically.aspx" title="Come creare un Content Type personalizzato via codice 
&lt;br /&gt;" target="_blank"&gt;questo post&lt;/a&gt;).
&lt;br /&gt;Abituati a come si devono gestire i campi (attraverso la classe SPFIeld) in liste SharePoint, la prima cosa ci può venire in mente è sicuramente quella di aggiungere il nostro SPField all'interno della SPFieldCollection esposta dalla proprietà "Fields" del nostro content type:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPContentType ct = web.ContentTypes[&lt;span style="color: #A31515"&gt;"CONTENT TYPE NAME"&lt;/span&gt;];
&lt;br /&gt;SPField field = web.Fields.GetFieldByInternalName(&lt;span style="color: #A31515"&gt;"COLUMN INTERNAL NAME"&lt;/span&gt;);
&lt;br /&gt;ct.Fields.Add(field);
&lt;br /&gt;ct.Update(&lt;span style="color: #0000FF"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ecco, nel caso dell'inserimento di un SPField all'interno di un content type e NON all'interno di una lista, questo codice &lt;b&gt;E' SBAGLIATO !&lt;/b&gt;
&lt;br /&gt;Infatti, se provate ad eseguirlo vi ritroverete questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;This functionality is unavailable for field collections not associated with a list&lt;/div&gt;
&lt;br /&gt;Errore scatenato all'esecuzione del metodo Add() della classe SPFieldCollection.
&lt;br /&gt;Il metodo corretto per l'inserimento di un SPField (la nostra site column) all'interno di un content type è tramite l'utilizzo della classe SPFieldLink. Ecco l'esempio.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPContentType ct = web.ContentTypes[&lt;span style="color: #A31515"&gt;"CONTENT TYPE NAME"&lt;/span&gt;];
&lt;br /&gt;SPField field = web.Fields.GetFieldByInternalName(&lt;span style="color: #A31515"&gt;"COLUMN INTERNAL NAME"&lt;/span&gt;);
&lt;br /&gt;SPFieldLink link = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPFieldLink(field);
&lt;br /&gt;ct.FieldLinks.Add(link);
&lt;br /&gt;ct.Update(&lt;span style="color: #0000FF"&gt;true&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Spero possa essere utile a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object Model.aspx" title="TAG: Object Model"&gt;Object Model&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content type.aspx" title="TAG: Content type"&gt;Content type&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/FunctionalityIsUnavailableForFieldCollectionsNotAssociatedWithAList.aspx" /><issued>2010-10-16T11:47:35+01:00</issued><modified>2010-10-16T11:47:35+01:00</modified></entry><entry><title>SharePoint 2010 e l'integrazione con le varie versioni di Office</title><id>/Blog/SharePoint2010AndOfficeIntegrationWithePaper.aspx</id><created>2010-10-15T8:7:0+01:00</created><content type="text/html" mode="escaped">Già per la versione 2007 di SharePoint era &lt;a href="http://technet.microsoft.com/en-us/library/cc263391.aspx" title="white paper for Office integration and SharePoint Server 2007" target="_blank"&gt;stato pubblicato&lt;/a&gt; un white paper che elencava le differenti caratteristiche e funzionalità che le versioni dei vari pacchetti Office avevano per quanto riguarda l'integrazione con WSS 3.0/MOSS 2007.
&lt;br /&gt;
&lt;br /&gt;Lo stesso white paper è stato aggiornato a SharePoint 2010 e Office 2010. Lo potete trovare all'interno del &lt;a href="http://download.microsoft.com/DOWNLOAD/2/A/A/2AA0D302-86A6-4AA2-A0A4-4F15FA7DBF5C/BUSINESS%20PRODUCTIVITY%20AT%20ITS%20BEST_WHITEPAPER.PDF" titlte="SharePoint 2010 e l'integrazione con le varie versioni di Office" target="_blank"&gt;sito di download di Microsoft&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Questo documento descrive come i programmi dei pacchetti Office 2010, 2007 e 2003 possono interagire con SharePoint 2010. Quali sono le caratteristiche che vengno "perse" utilizzando una versione precedente ad Office 2010 e quali invece sono le novità dell'integrazione di questi nuovi due prodotti.
&lt;br /&gt;Infatti, come sapete, ogni versione di SharePoint dava il suo meglio con una corrispettiva versione di Office.
&lt;br /&gt;
&lt;br /&gt;SPS 2003 --&gt; Office 2003
&lt;br /&gt;WSS 3.0/MOSS 2007 --&gt; Office 2007
&lt;br /&gt;SharePoint 2010 --&gt; Office 2010
&lt;br /&gt;
&lt;br /&gt;Ovviamente, è stato sempre garantito il funzionamento delle caratteristiche di base di questa integrazione per le versioni precedenti di Office, ma per tutte le nuove funzionalità di ogni prodotto c'erano delle ovvie limitazioni per tali versioni. Limitazioni che invece non sono presenti nella versione di Office corrispettiva.
&lt;br /&gt;Non la faccio lunga.. vi invito a leggervi il white paper che è sicuramente meglio. :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2010.aspx" title="TAG: Office 2010"&gt;Office 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010AndOfficeIntegrationWithePaper.aspx" /><issued>2010-10-15T8:7:0+01:00</issued><modified>2010-10-15T8:7:0+01:00</modified></entry><entry><title>Gestione di liste con il Client Object Model di SharePoint 2010</title><id>/Blog/ListManagementWithSharePoint2010ClientObjectModel2010.aspx</id><created>2010-10-12T21:46:33+01:00</created><content type="text/html" mode="escaped">&lt;img style="margin: 5px; float: right" alt="SharePoint Community" src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" /&gt;Continua la serie di articoli legati al Client Object Model di SharePoint 2010 pubblicati su &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePointCommunity&lt;/a&gt;.
&lt;br /&gt;Dopo un &lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" title="Introduzione alle Client-Side API di SharePoint 2010" target="_blank"&gt;articolo introduttivo&lt;/a&gt; e uno legato alle &lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" title="Operazione CRUD con il Client Object Model di SharePoint 2010" target="_blank"&gt;operazioni che possiamo fare su elementi di liste&lt;/a&gt;, questa è la volta delle classi e dei metodi per la gestione di liste presenti all'interno di siti SharePoint. Dalla creazione e selezione di singole liste o gruppi di liste, alla modifica (nel caso specifico l'inserimento di un campo) e cancellazione.
&lt;br /&gt;E' sicuramente un argomento molto interessante anche questo, perchè capita spesso di dover interagire direttamente con la struttura di una lista, a partire dalla sua creazione o dall'eventuale modifica di uno o più campi, da applicazioni client-side. Con il Client Object Model offerto da SharePoint 2010, non dobbiamo più utilizzare il web service "Lists" (come facevamo su MOSS 2007) e possiamo mantenere il paradigma ad oggetti durante lo sviluppo della nostra applicazione.
&lt;br /&gt;
&lt;br /&gt;Questo il link diretto all'articolo:
&lt;br /&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15" title="Gestione di liste con il Client Object Model di SharePoint 2010" target="_blank"&gt;http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=15&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete invece scaricare la soluzione Visual Studio 2010 che ho utilizzato per la stesura, la trovate qua:
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.SP2010.ListsManagement.zip" title="Gestione di liste con il Client Object Model di SharePoint 2010" target="_blank"&gt;PeppeDotNet.SP2010.ListsManagement.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E se avete domande, potete scrivere direttamente sul &lt;a href="http://social.msdn.microsoft.com/Forums/it-IT/sharepointit/threads" title="Forum Microsoft per lo sviluppo su SharePoint" target="_blank"&gt;forum Microsoft&lt;/a&gt; per lo sviluppo su SharePoint.
&lt;br /&gt;Buona lettura ! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ListManagementWithSharePoint2010ClientObjectModel2010.aspx" /><issued>2010-10-12T21:46:33+01:00</issued><modified>2010-10-12T21:46:33+01:00</modified></entry><entry><title>Di ritorno dallo &quot;SharePoint and CRM day&quot;</title><id>/Blog/NoteFromSharePointAndCRMDay.aspx</id><created>2010-10-11T11:18:48+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepointandcrmday.jpg" alt="La mia sessione sullo sviluppo avanzato di SharePoint 2010" style="float: right; margin-left: 10px;" /&gt;Sono tornato ieri dall'ultimo evento su SharePoint a cui ho partecipato: lo "SharePoint and CRM day".
&lt;br /&gt;Anche se sto aspettando ancora i feedback, è stato davvero un bell'evento.
&lt;br /&gt;Devo ringraziare tutte le persone che sono venute, gli sponsor e sopratutto i ragazzi dello staff, precisi in tutto e di un'accoglienza fantastica !
&lt;br /&gt;
&lt;br /&gt;Come per gli altri eventi community, vi lascio qui il materiale (slide e demo) della mia sessione sullo sviluppo avanzato di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/SviluppoAvanzatoSuSharePoint2010.pdf" title="Slide della mia sessione si sviluppo avanzato su SharePoint 2010" target="_blank"&gt;Slide (PDF file)&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://www.peppedotnet.it/zip/Dev4Side.SharePointDay.zip" title="Demo della mia sessione si sviluppo avanzato su SharePoint 2010" target="_blank"&gt;Demos&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Spero davvero che il lavoro di &lt;a href="http://www.sharepointcommunity.it" title="Italian SharePoint Community" target="_blank"&gt;SharePointCommunity&lt;/a&gt; sia stato apprezzato e che si "diffonda un pò la voce" in tutta Italia sulla nostra iniziativa.
&lt;br /&gt;Ah dimenticavo, volevo anche avvisare tutte le persone che hanno ricevuto la maglietta.. se non vi &lt;a href="http://www.sharepointcommunity.it/registration/register.aspx" title="Iscriviti a SharePointCommunity.it" target="_blank"&gt;iscrivete&lt;/a&gt; alla community.. vi vengo a prendere uno per uno !!!! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;] [&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/NoteFromSharePointAndCRMDay.aspx" /><issued>2010-10-11T11:18:48+01:00</issued><modified>2010-10-11T11:18:48+01:00</modified></entry><entry><title>Sale e ore delle mie sessioni alla Micorosft TechDays WPC 2010</title><id>/Blog/SaleEOreDelleMieSessioniAllaMicrosoftTechdaysWPC2010.aspx</id><created>2010-10-7T9:26:39+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.techdays-wpc.it/images/media/Attendee02.png" alt="Microsoft TechDays WPC 2010" style="float: right; margin: 10px" /&gt;Da una settimana è uscita l'&lt;a href="http://www.techdays-wpc.it/agenda.aspx" title="Agenda Microsoft TechDays WPC 2010" target="_blank"&gt;agenda ufficiale&lt;/a&gt; della conferenza che si terrà il 23, 24 e 25 novembre qui a Milano organizzata da Microsoft e OverNet Education (la vecchia WPC).
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Blog/MySessionsAtMicrosoftTechDaysWPC.aspx" title="Le mie sessioni alla Microsoft WPC" target="_blank"&gt;Come vi dicevo&lt;/a&gt;, terrò due sessioni legate principalmente all'utilizzo del modello ad oggetti client-side offerto da SharePoint 2010. La prima un pò più introduttiva e la seconda specifica su Silverlight.
&lt;br /&gt;Vi lascio qui le ore e le sale, così che se siete interessati avete un memo in più :)
&lt;br /&gt;
&lt;br /&gt;&lt;table style="width: 600px"&gt;&lt;tr bgColor="#e8e8e8"&gt;&lt;td&gt;&lt;span&gt;Verde&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span&gt;14.00&lt;br /&gt;15.15&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span&gt;DEV201 | &lt;b&gt;Introduction to SharePoint 2010 Client Object Model&lt;/b&gt;&lt;br /&gt;Giuseppe Marchi &lt;i&gt;{Track: Collaboration, Workflow &amp; Search }&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;Gialla&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span&gt;17.15&lt;br /&gt;18.30&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span&gt;DEV306 | &lt;b&gt;Silverlight loves SharePoint 2010&lt;/b&gt;&lt;br /&gt;Giuseppe Marchi &lt;i&gt;{Track: Collaboration, Workflow &amp; Search }&lt;/i&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;Per chi viene, mi raccomando fatevi riconoscere ;)
&lt;br /&gt;
&lt;br /&gt;Per chi è ancora indeciso, ricordo che il prezzo è ancora scontato fino al 10 di novembre ! 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WPC.aspx" title="TAG: WPC"&gt;WPC&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/SaleEOreDelleMieSessioniAllaMicrosoftTechdaysWPC2010.aspx" /><issued>2010-10-7T9:26:39+01:00</issued><modified>2010-10-7T9:26:39+01:00</modified></entry><entry><title>Le librerie di SharePoint 2010 possono essere usate solo su applicazioni compilate con il .NET Framework 3.5</title><id>/Blog/MicrosoftSharePointIsNotSupportedWithVersion4OfTheNetFramework.aspx</id><created>2010-10-6T14:31:59+01:00</created><content type="text/html" mode="escaped">Se provate a creare un nuovo progetto con la versione 4 del .NET Framework come Target Platform e inserite la libreria Microsoft.SharePoint.dll tra le referenze del vostro progetto, vi accorgerete che tale libreria non può essere utilizzata con altre versioni del Framework se non con la versione 3.5 !
&lt;br /&gt;Infatti, usando una delle classi del modello ad oggetti lato server di SharePoint 2010, troverete questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;System.PlatformNotSupportedException
&lt;br /&gt;Microsoft SharePoint is not supported with version 4.0.30319.1 of the Microsoft .Net Runtime.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/SharePointDLLOnlyOn35.png" alt="Microsoft SharePoint is not supported with version 4.0.30319.1 of the Microsoft .Net Runtime" /&gt;
&lt;br /&gt;
&lt;br /&gt;In altri casi, vi può succedere che subito dopo aver inserito la referenza alla dll di SharePoint tutto funzioni correttamente, intellisense e tutto il resto. Ma, alla prima compilazione, troverete tra le eccezioni scatenate la seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The type or namespace name 'SharePoint' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Questo purtroppo è così e basta ! Microsoft direbbe "è così by desgin". Quindi non possiamo farci niente.
&lt;br /&gt;Se vogliamo leggere o modificare dati presenti in SharePoint da un'applicazione scritta utilizzando il .NET Framework 4.0 dobbiamo usare i webservices esposti.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object Model.aspx" title="TAG: Object Model"&gt;Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MicrosoftSharePointIsNotSupportedWithVersion4OfTheNetFramework.aspx" /><issued>2010-10-6T14:31:59+01:00</issued><modified>2010-10-6T14:31:59+01:00</modified></entry><entry><title>Come avere un report esaustivo prima di una migrazione a SharePoint 2010 con il metodo &quot;database attach&quot;</title><id>/Blog/SharePoint2010ExtendedMigrationDbAttachReport.aspx</id><created>2010-9-27T21:24:56+01:00</created><content type="text/html" mode="escaped">Una delle modalità più usate e più consigliate per effettuare una migrazione da MOSS 2007/WSS 3.0 a SharePoint 2010 è sicuramente quella dell'attach del database dei contenuti.
&lt;br /&gt;Se avete mai provato questa modalità per le vostre migrazioni, saprete sicuramente come utilizzare il cmdlet "Test-SPContentDatabase" di powershell e saprete anche che il risultato prodotto da questa operazione risulta pieno di informazioni, forse un pò forvianti o pressoché inutili. Il tool infatti, visualizza sulla console le informazioni di base riguardo tutte le issue che potrete incontrare se decidete di migrare il vostro database dei contenuti alla nuova versione di SharePoint.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/mossdbattach.jpg" alt="Test-SPContentDatabase method" /&gt;
&lt;br /&gt;
&lt;br /&gt;Sfortunatamente però, non otteniamo le informazioni che ci aiutano a capire quali sono queste issue e dove sono attualmente utilizzate. Per esempio:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le feature che verranno perse durante la migrazione sono presentate solamente tramite il loro identificativo&lt;/li&gt;&lt;li&gt;Le web part che dovranno essere spostate/migrate, vengono presentate solamente tramite un'identificativo (ottenuto tramite il calcolo spiegato &lt;a href="http://www.peppedotnet.it/Blog/HowToFindMissingWebPartIndicatedOverUpagradeToSharePoint2010Report.aspx" title="Come recuperare le Missing Web Part indicate nel report di upgrade a SharePoint 2010 " target="_blank"&gt;qua&lt;/a&gt;).&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Questo significa che non siamo ne in grado di capire quali sono le web part che dobbiamo migrare, ne quali le feature e, sopratutto, non possiamo sapere dove queste sono attivate o utilizzate all'interno dei siti SharePoint presenti all'interno del database di contenuto che stiamo migrando.
&lt;br /&gt;Questo rende decisamente difficile la nostra migrazione, sopratutto se ci troviamo di fronte ad un ambiente SharePoint 2007 che non abbiamo customizzato in prima persona.
&lt;br /&gt;
&lt;br /&gt;Ecco quindi che, io e il mio gruppo, abbiamo sviluppato un piccolo tool di supporto a questa operazione che è in grado di leggere il report generato dal cmdlet "Test-SPContentDatabase" e generarne un secondo un pò più ricco diciamo.
&lt;br /&gt;Infatti, una volta eseguito il nostro tool, una web part mancante che prima ci veniva presentata in questo modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;And a MissingWebPart issue like
&lt;br /&gt;Category        : MissingWebPart
&lt;br /&gt;Error           : True
&lt;br /&gt;UpgradeBlocking : False
&lt;br /&gt;Message         : WebPart class [xxx] is referenced [3] times in the database xxxx], but  is not installed on the current farm...&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;nel nuovo report generato, verrà invece visualizzato quanto segue:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;WebPart Details: CustomWebPart
&lt;br /&gt;WebPart name: CustomWebPart     
&lt;br /&gt;WebPart Type name: CustomWebPart.namespace     
&lt;br /&gt;Assembly Name: CustomWebPartAssembly, Version=1.1.0.0, Culture=neutral, PublicKeyToken=7668678dcd8080b491
&lt;br /&gt;WebPart Id:: xxx
&lt;br /&gt;This wep part can be located in the following pages:
&lt;br /&gt;SubSite/default.aspx
&lt;br /&gt;SubSite1/subsite/page.aspx&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Quindi, dal niente a TUTTO ! :)
&lt;br /&gt;Scherzi a parte, con questo tool siamo in grado di capire esattamente quali saranno le web part, le feature e le altre customizzazioni che dobbiamo migrare all'interno della nuova farm SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Per utilizzarlo, è necessario seguire questi passi:
&lt;br /&gt;
&lt;br /&gt;1- effetture un backup e restore del database di contenuto all'interno del database server di SharePoint 2010
&lt;br /&gt;(qua per le istruzioni: &lt;a href="http://msdn.microsoft.com/en-us/library/ms187048.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ms187048.aspx&lt;/a&gt;);
&lt;br /&gt;2- eseguire il comando "Test-SPContentDatabase" tramite powershell per generare il report di input
&lt;br /&gt;(qua per le istruzioni: &lt;a href="http://technet.microsoft.com/en-us/library/cc263026.aspx" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc263026.aspx&lt;/a&gt; e &lt;a href="http://technet.microsoft.com/en-us/library/ff607941.aspx" target="_blank"&gt;http://technet.microsoft.com/en-us/library/ff607941.aspx&lt;/a&gt;);
&lt;br /&gt;3- Copiare il report generato all'interno della vecchia farm SharePoint 2007;
&lt;br /&gt;4- Eseguire il nostro tool passando il file .txt come unico parametro
&lt;br /&gt;
&lt;br /&gt;Questa figura vi può chiarire il processo di utilizzo.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/migration2007howto.jpg" alt="Processo di creazione del report" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per poterlo utilizzare, potete scaricare l'eseguibile compilato da codeplex o potete prendere i sorgenti e ricompilarlo. Ecco il link diretto al progetto:
&lt;br /&gt;&lt;a href="http://sp2010extmigrareport.codeplex.com/" title="SharePoint 2010 extended migration db attach report " target="_blank"&gt;http://sp2010extmigrareport.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Bene, mi sembra tutto :)
&lt;br /&gt;Chiaramente il tool è ancora in fase di sviluppo e alcune missing customization non vengono recuperate nella loro interezza. Se qualcuno ha voglia di partecipare al progetto, ne saremmo ben contenti.
&lt;br /&gt;Se invece, pensate di utilizzarlo per le vostre migrazioni e siete così gentili da darci un feedback, ne saremo sicuramente felicissimi !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Upgrade.aspx" title="TAG: Upgrade"&gt;Upgrade&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Codeplex.aspx" title="TAG: Codeplex"&gt;Codeplex&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ExtendedMigrationDbAttachReport.aspx" /><issued>2010-9-27T21:24:56+01:00</issued><modified>2010-9-27T21:24:56+01:00</modified></entry><entry><title>Bug nell'utilizzo di una Delay activity in un workflow di SharePoint 2010</title><id>/Blog/BugUsingDelayActivityOnSharePoint2010Workflow.aspx</id><created>2010-9-23T10:35:24+01:00</created><content type="text/html" mode="escaped">Dal &lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.DelayActivityBug.zip" title="Microsoft forum su SharePoint in italiano" target="_blank"&gt;forum italiano di sviluppo su SharePoint&lt;/a&gt; è venuta fuori un'interessante discussione sul mancato funzionamento di una Delay activity all'interno di un workflow sequenziale creato per essere eseguito all'interno di SharePoint 2010.
&lt;br /&gt;Andando nei dettagli, a fronte di un'installazione standard di SharePoint, se si prova a sviluppare un workflow che utilizza una Listen activity con all'interno una Delay activity che blocca il worklfow per un numero preciso di minuti, vi accorgerete che il flusso di operazioni resterà fermo per sempre. Non ci sarà alcun modo per far ripartire quel workflow dopo aver aspettato i minuti definiti all'interno dell'attività di tipo Delay.
&lt;br /&gt;Il workflow con cui io ho testato questo comportamento è rappresentato in figura.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/DelayActivityBug.jpg" alt="Delay activity bug on SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Girando su internet ci siamo accorti che il problema era già presente all'interno della vecchia versione di SharePoint (WSS 3.0/MOSS 2007) e che non è stato corretto.
&lt;br /&gt;C'è una soluzione però ! 
&lt;br /&gt;Per permettere il funzionamento di un workflow che utilizza una Delay activity è necessario settare una proprietà sul sito in cui si intende far girare il workflow, tramite l'utility STSADM.
&lt;br /&gt;La proprietà in questione è la "", che va valorizzata con il valore: "".
&lt;br /&gt;Quindi, prima possiamo provare a farci stampare il valore attuale della proprietà in questione:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o getproperty -pn job-workflow -url http://siteurl
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Poi, possiamo settarla:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o setproperty -pn job-workflow -pv "Every 5 minutes between 0 and 59" -url http://siteurl
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una volta terminate le operazioni tramite l'utility STSADM, ricordatevi che è necessario un IISRESET e un riavvio del servizio timer di SharePoint.
&lt;br /&gt;
&lt;br /&gt;Fatto questo, il servizio timer capisce che deve controllare i nostri workflow ogni 5 minuti e permette così alla Delay activity di scattare correttamente.
&lt;br /&gt;Cosa molto importante da ricordare è che se vogliamo fare debug di un workflow di questo tipo, è necessario attaccarci al processo OSWTimer di SharePoint, altrimenti i nostri breakpoint non verranno mai catturati dal debugger.
&lt;br /&gt;
&lt;br /&gt;Se volete metterci un pò le mani, ecco qua la soluzione di test che ho utilizzato per riscontrare effettivamente il bug sulla mia macchina:
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.DelayActivityBug.zip" title="Sorgenti di test relativi al bug sulla Delay activity" target="_blank"&gt;PeppeDotNet.DelayActivityBug.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Workflow.aspx" title="TAG: Workflow"&gt;Workflow&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/BugUsingDelayActivityOnSharePoint2010Workflow.aspx" /><issued>2010-9-23T10:35:24+01:00</issued><modified>2010-9-23T10:35:24+01:00</modified></entry><entry><title>SharePoint 2010 and CRM Day: ancora posti disponibili !</title><id>/Blog/SharePoint2010AndCRMDay.aspx</id><created>2010-9-20T19:41:42+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://sharepointcrmday.dotnetcampania.org/" title="SharePoint 2010 and CRM Day con DotNetCampania e SharePoint Community" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/SharePointAndCRMDay.png" alt="SharePoint 2010 and CRM Day con DotNetCampania e SharePoint Community" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi volevo ricordare dell'evento che &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt; sta organizzando assieme ai ragazzi di &lt;a href="http://www.dotnetcampania.org/" title="DotNetCampania" target="_blank"&gt;DotNetCampania&lt;/a&gt; su SharePoint 2010 e CRM 2011 e dirvi, soprattutto, che ci sono ancora posti disponibili per l'iscrizione. Quindi forza, affrettatevi !!
&lt;br /&gt;La giornata avrà luogo venerdì 08/10/2010 al Centro Congressi Holiday Inn, Napoli.
&lt;br /&gt;&lt;a href="http://sharepointcrmday.dotnetcampania.org/registrazione.aspx" title="Registrazione" target="_blank"&gt;Qui trovate il form di registrazione all'evento&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;Sarà un'ottima occasione per vedere tutte le novità sia per DEV che per IT PRO della nuova versione di SharePoint e per avere un'anteprima di CRM 2011.
&lt;br /&gt;
&lt;br /&gt;Vi aspettiamo !!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/CRM.aspx" title="TAG: CRM"&gt;CRM&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010AndCRMDay.aspx" /><issued>2010-9-20T19:41:42+01:00</issued><modified>2010-9-20T19:41:42+01:00</modified></entry><entry><title>Content CHM per professionisti IT su SharePoint Fonudation 2010 e SharePoint Server 2010</title><id>/Blog/ContentChmForITProForSharePoint2010.aspx</id><created>2010-9-20T14:11:30+01:00</created><content type="text/html" mode="escaped">Dal download center di Microsoft, sono stati resi disponibili due CHM per professionisti IT su SharePoint Foundation 2010 e SharePoint Server 2010.
&lt;br /&gt;Qua per il download:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c8cf1631-0f48-4a02-a18d-54b04eb7f0a7" title="Microsoft SharePoint Foundation 2010 Technical Library in Compiled Help format" target="_blank"&gt;Microsoft SharePoint Foundation 2010 Technical Library in Compiled Help format&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3629425d-1505-456e-89e2-ede95f75ffe5" title="Microsoft SharePoint Server 2010 Technical Library in Compiled Help format" target="_blank"&gt;Microsoft SharePoint Server 2010 Technical Library in Compiled Help format&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Server 2010.aspx" title="TAG: SharePoint Server 2010"&gt;SharePoint Server 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ContentChmForITProForSharePoint2010.aspx" /><issued>2010-9-20T14:11:30+01:00</issued><modified>2010-9-20T14:11:30+01:00</modified></entry><entry><title>Come aggiungere assembly esterni alla soluzione WSP per SharePoint 2010 creata da Visual Studio 2010</title><id>/Blog/HowToAddAssemblyToWSPSolutionVisualStudio2010SharePoint2010.aspx</id><created>2010-9-19T23:20:37+01:00</created><content type="text/html" mode="escaped">Molto spesso può capitare di utilizzare componenti o funzioni presenti in assembly esterni, all'interno delle nostre personalizzazioni SharePoint. Questi poi, se utilizzati all'interno di web part, user control o pagine, devono essere aggiunti anche all'interno della sezione "Safe controls" dei vari file web.config delle web application in cui dovranno poi essere utilizzati, altrimenti risulterà impossibile utilizzare la personalizzazione da noi sviluppata.
&lt;br /&gt;Se quindi, vi inoltrate nello sviluppo di una web part che utilizza un componente o una funzione specifica presente all'interno di un assembly non appartenente alla vostra soluzione, in fase di compilazione non troverete alcun tipo di problema ma, una volta effettuato il deployment della soluzione all'interno di SharePoint vi accorgerete che non sarà possibile utilizzare la web part in quanto vi viene segnalato l'utilizzo di un assembly non contrassegnato come sicuro.
&lt;br /&gt;Inoltre, se effettuate il deployment di tale soluzione su un'altra macchina, vi accorgerete anche che la vostra dll esterne non viene proprio portata, ne all'interno della GAC del server ne all'interno delle varie directory /bin di ogni web application.
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Questo perchè l'operazione di creazione della soluzione WSP propria di Visual Studio 2010, NON inserisce in automatico le dll esterne referenziate al progetto SharePoint di cui sta creando il pacchetto per il deployment.&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;Per aggiungere le librerie esterne alla soluzione SharePoint che stiamo sviluppando, dobbiamo aprire il Package Designer relativo alla nostra soluzione SharePoint e selezionare la voce "Advanced" posta in fondo alla zona di lavoro.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/01_PackageAdvancedProperties.jpg" alt="Come aggiungere assembly esterni alla soluzione WSP per SharePoint 2010 creata da Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Scegliere poi di aggiungere un nuovo assembly al pacchetto corrente:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/02_AddExistingAssembly.jpg" alt="Come aggiungere assembly esterni alla soluzione WSP per SharePoint 2010 creata da Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Selezionare l'assembly di cui effettuare il deployment, la tipologia di deployment (se in GAC o se nelle varie directory /bin) e se dovrà poi essere inserita la definizione all'interno della sezione "Safe controls" dei vari file web.config proprio di ogni web application SharePoint.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/03_SelectAssembly.jpg" alt="Come aggiungere assembly esterni alla soluzione WSP per SharePoint 2010 creata da Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, siamo in grado di utilizzare le funzionalità esposte da librerie esterne alla nostra soluzione e di impacchettarle per un corretto deployment sulla farm SharePoint 2010.
&lt;br /&gt;A me è stato molto utile..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&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/HowToAddAssemblyToWSPSolutionVisualStudio2010SharePoint2010.aspx" /><issued>2010-9-19T23:20:37+01:00</issued><modified>2010-9-19T23:20:37+01:00</modified></entry><entry><title>Errore: &quot;The Web application at ... could not be found&quot; su applicazioni Visual Studio 2010 e SharePoint 2010</title><id>/Blog/ErrorTheWebApplicationCouldNotBeFoundVS2010SharePoint2010.aspx</id><created>2010-9-19T20:58:30+01:00</created><content type="text/html" mode="escaped">Utilizzando il modello ad oggetti lato server di SharePoint 2010 all'interno delle proprie applicazioni (nel mio caso una semplice console application), l'operazione da cui solitamente si parte è quella di istanziare un nuovo oggetto SPSite, da cui poi ricavare il relativo SPWeb e così via..
&lt;br /&gt;Installando Visual Studio 2010 sulla macchina SharePoint 2010 di sviluppo, dopo aver configurato la farm ed averne verificato il corretto funzionamento, vi accorgerete che tale operazione iniziale ritornerà un'errore (per la precizione una FileNotFoundException). Infatti, il codice:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt;(SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://localhost/"&lt;/span&gt;))
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #008200"&gt;//...&lt;/span&gt;
}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;produrrà l'errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The Web application at http://localhost/ could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Solitamente (anche nella precedente versione di SharePoint), questo errore è dovuto o alla mancanza di permessi dell'utente corrente sul sito SharePoint o ad una scorretta configurazione dell'Alternate Access Mapping della web application che si vuole cercare di raggiungere. 
&lt;br /&gt;Eppure (era anche il mio caso) l'indirizzo che avete specificato risponde correttamente tramite browser.
&lt;br /&gt;
&lt;br /&gt;Ebbene.. questo accade perchè di default, ogni nuova applicazione che viene creata all'interno di Visual Studio 2010 ha come target framework la versione 4.0 (il che non è un problema per un'applicazione SharePoint), ma come piattaforma di riferimento la x86.
&lt;br /&gt;Il problema però, come dovreste sapere, è che SharePoint 2010 gira solamente su piattaforme a 64 bit (x64).
&lt;br /&gt;Una volta che vi ricordate questo importantissimo vincolo, non vi resta che modificare la proprietà "Target Platform" del vostro progetto e vedrete che tutto ritornerà a funzionare.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/TargetPlatform64.jpg" alt="Cambiamento target platform a 64bit per applicazioni SharePoint 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Chiaramente, se create nuovi progetti a partire dai template disponibili per lo sviluppo in SharePoint 2010 questo problema non verrà riscontrato.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Object Model.aspx" title="TAG: Object Model"&gt;Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorTheWebApplicationCouldNotBeFoundVS2010SharePoint2010.aspx" /><issued>2010-9-19T20:58:30+01:00</issued><modified>2010-9-19T20:58:30+01:00</modified></entry><entry><title>Come creare viste personalizzate su un sondaggio in SharePoint 2007</title><id>/Blog/HowToCreateCustomViewsOnMOSS2007Survey.aspx</id><created>2010-9-15T17:54:24+01:00</created><content type="text/html" mode="escaped">Se creiamo una nuova lista all'interno di uno dei nostri siti SharePoint, partendo dal template "Survey", siamo in grado di offrire ai nostri utenti un vero e proprio sondaggio. Tale template però è un pò particolare.
&lt;br /&gt;Se vedete bene, ne dalla toolbar ne dalla pagina delle impostazioni della lista stessa, non è possibile creare nuove viste da affiancare alla "All responses", alla "Overview" e alla "Graphical summary".
&lt;br /&gt;Questa è stata una scelta del team di sviluppo di SharePoint che gli ha portati a creare questa tipologia di template.
&lt;br /&gt;Detto questo, dobbiamo però sapere che il meccanismo delle viste è comunque presente in tutte le liste che vengono create all'interno di SharePoint. Quello che fa quel template è semplicemente nascondere i link per la creazione o per la modifica delle viste già esistenti.
&lt;br /&gt;Per creare una nuova vista all'interno di un sondaggio qunidi, dobbiamo seguire questi passi:
&lt;br /&gt;
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Recuperare l'ID della lista. Per farlo possiamo aprire la lista in formato Feed RSS e copiare la querystring "List" facente parte dell'indirizzo.
&lt;br /&gt;Es: http://SITEURL/_layouts/listfeed.aspx?List={...}
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copiare l'indirizzo del link "Create view" che troviamo all'interno della impostazioni di una seconda lista.
&lt;br /&gt;Es: http://SITEURL/_layouts/ViewType.aspx?List={...}
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Modificare il link "Create view" sostituendo l'identificativo della lista di tipo "Survey".
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Selezionare il tipo di vista (io consiglio di partire dalla "All responses", perchè la "Overview" ha un layout che non vede la presenza dalla solita griglia con tutti gli elementi della lista).
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nominare la vista, scegliere i campi e la configurazione (filtri, sorting, limiti, ecc...).
&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fare click su OK :)&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Così facendo, troverete la vostra nuova vista nel menu a tendina presente nella toolbar della lista di tipo "Survey".
&lt;br /&gt;Non è difficilissimo, no ? :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCreateCustomViewsOnMOSS2007Survey.aspx" /><issued>2010-9-15T17:54:24+01:00</issued><modified>2010-9-15T17:54:24+01:00</modified></entry><entry><title>Guida per la migrazione di WSS 3.0 a SharePoint Foundation 2010 su Small Business Server</title><id>/Blog/MigrationFromWSS3ToFoundation2010OnSmallBusinessServer.aspx</id><created>2010-9-12T12:8:13+01:00</created><content type="text/html" mode="escaped">Microsoft ha rilasciato una guida per imparare a migrare i siti Window SharePoint Services 3.0 interni (il famoso companyweb per intenderci) che possono essere creati su di un'installazione di Small Business Server, a SharePoint Foundation 2010.
&lt;br /&gt;Davvero utile !
&lt;br /&gt;
&lt;br /&gt;Qui per il download: 
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2dc66a0f-f840-4b29-93d3-13db70c85cba" title="Step-by-Step Guide to Migrating from Windows SharePoint Services 3.0 to Microsoft SharePoint Foundation 2010 on a server running Windows Small Business Server 2008" target="_blank"&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2dc66a0f-f840-4b29-93d3-13db70c85cba&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Migrazione.aspx" title="TAG: Migrazione"&gt;Migrazione&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MigrationFromWSS3ToFoundation2010OnSmallBusinessServer.aspx" /><issued>2010-9-12T12:8:13+01:00</issued><modified>2010-9-12T12:8:13+01:00</modified></entry><entry><title>La differenza tra le propriet&#224; SiteUsers, Users e AllUsers della classe SPWeb</title><id>/Blog/DifferencesBetweenSiteUsersUsersAndAllUsersSPWebProperties.aspx</id><created>2010-9-12T11:59:10+01:00</created><content type="text/html" mode="escaped">Ogni volta che dobbiamo recuperare un oggetto di tipo SPUser relativo ad un particolare utente del nostro sito utilizzando il suo login name, è molto probabile andare in confusione tra le proprietà Users, AllUsers e SiteUsers esposte dalla classe SPWeb propria del modello ad oggetti lato server di SharePoint.
&lt;br /&gt;Il più delle volte, infatti, si è portati ad utilizzare la proprietà Users per questo tipo di operazione. E, se l'utente non è stato esplicitamente inserito all'interno dei permessi del sito corrente (senza essere incluso in un gruppo), l'utilizzo di quella proprietà ci ritornerà un errore di questo tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;User cannot be found&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;E' bene quindi sapere la differenza che intercorre tra le tre proprietà in questione, per evitare di incappare sempre in questo errore. Ecco qua tutto spiegato:
&lt;br /&gt;
&lt;br /&gt;- &lt;b&gt;SPWeb.AllUsers&lt;/b&gt;: ritorna la collezione di oggetti che rappresentano tutti gli utenti che sono o membri del sito o che hanno navigato il sito come membri autenticati di un gruppo di dominio che ha permessi sul sito stesso.
&lt;br /&gt;
&lt;br /&gt;- &lt;b&gt;SPWeb.Users&lt;/b&gt;: ritorna la collezione di oggetti che rappresentano tutti gli utenti a cui sono stati assegnati dei permessi esplicitamente all'interno del sito corrente.
&lt;br /&gt;
&lt;br /&gt;- &lt;b&gt;SPWeb.SiteUsers&lt;/b&gt;: ritorna la collezione di utenti che fanno parte della site collection corrente.
&lt;br /&gt;
&lt;br /&gt;Spero possa essere utile a qualcuno.
&lt;br /&gt;Buona domenica a tutti ! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SPWeb.aspx" title="TAG: SPWeb"&gt;SPWeb&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DifferencesBetweenSiteUsersUsersAndAllUsersSPWebProperties.aspx" /><issued>2010-9-12T11:59:10+01:00</issued><modified>2010-9-12T11:59:10+01:00</modified></entry><entry><title>SharePoint 2010 and CRM Day con DotNetCampania e SharePoint Community</title><id>/Blog/SharePoint2010AndCRMDayWithSharePointCommunityDotNetCampania.aspx</id><created>2010-9-10T11:23:16+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://sharepointcrmday.dotnetcampania.org/" title="SharePoint 2010 and CRM Day con DotNetCampania e SharePoint Community" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/SharePointAndCRMDay.png" alt="SharePoint 2010 and CRM Day con DotNetCampania e SharePoint Community" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Sono molto contento di darvi questa notizia...
&lt;br /&gt;Venerdì 8 ottobre a Napoli, si terrà un evento su SharePoint 2010 e CRM organizzato da &lt;a href="http://dotnetcampania.org/" title="DotNetCampania" target="_blank"&gt;DotNetCampania&lt;/a&gt; in collaborazione con &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt; !!!
&lt;br /&gt;
&lt;br /&gt;L'evento vedrà quattro sessioni su SharePoint 2010 e due su CRM 2011.
&lt;br /&gt;Della seconda parte se ne occuperà &lt;a href="http://www.crionet.it/" title="Giorgio Garcia-Agreda" target="_blank"&gt;Giorgio&lt;/a&gt; (MVP su CRM). Su SharePoint invece, verrà tenuta una sessione introduttiva da &lt;a href="http://bitvector.tostring.it/" title="Salvatore di Fazio" target="_blank"&gt;Salvatore&lt;/a&gt; (di SharePoint Community), una per Professionisti IT tenuta da &lt;a href="http://dotnetcampania.org/blogs/mariosaccoia/" title="Mario Saccoia" target="_blank"&gt;Mario&lt;/a&gt; (di DotNetCampania), una introduttiva sullo sviluppo tenuta da &lt;a href="http://dotnetcampania.org/blogs/luigipanariello" title="Luigi Panariello" target="_blank"&gt;Luigi&lt;/a&gt;  (di DotNetCampania) e una su tecniche di sviluppo un pò più avanzato che terrò io. Comunque, trovate i dettagli sull'&lt;a href="http://sharepointcrmday.dotnetcampania.org/agenda.aspx" title="Agenda evento" target="_blank"&gt;agenda&lt;/a&gt; sul sito dell'evento.
&lt;br /&gt;Per quanto riguarda la mia sessione, vedremo tutte le novità un pò più avanzate che ci ha reso disponibili la nuova versione di SharePoint. Si parlerà quindi di Client Object Model, di integrazione con Silverlight, di customizzazione dell'interfaccia "ribbon" e dell'utilizzo dei Business Connectivity Services per l'integrazione e la gestione di dati esterni al contesto di SharePoint.
&lt;br /&gt;Si prospetta veramente un bell'evento ! Se siete dalle parti di Napoli quindi, vi consiglio di venire.
&lt;br /&gt;
&lt;br /&gt;Le &lt;a href="http://sharepointcrmday.dotnetcampania.org/registrazione.aspx" title="Registrazione evento" target="_blank"&gt;registrazioni&lt;/a&gt; sono aperte, quindi affrettatevi !
&lt;br /&gt;Ci vediamo la ! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/DotNetCampania.aspx" title="TAG: DotNetCampania"&gt;DotNetCampania&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;] [&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/Business Connectivity Services.aspx" title="TAG: Business Connectivity Services"&gt;Business Connectivity Services&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]
&lt;br /&gt;</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010AndCRMDayWithSharePointCommunityDotNetCampania.aspx" /><issued>2010-9-10T11:23:16+01:00</issued><modified>2010-9-10T11:23:16+01:00</modified></entry><entry><title>Aggiornato l'SDK di SharePoint 2010 con 44 esempi di codice</title><id>/Blog/UpdatedSharePoint2010SDKWith44SampleCodes.aspx</id><created>2010-9-10T10:34:50+01:00</created><content type="text/html" mode="escaped">L'SDK di SharePoint 2010 è stato appena aggiornato ! Lo potete scaricare da &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=f0c9daf3-4c54-45ed-9bde-7b4d83a8f26f" title="Microsoft Download Center" target="_blank"&gt;centro download Microsoft&lt;/a&gt;.
&lt;br /&gt;La notizia è stata data dal blog di &lt;a href="http://blogs.msdn.com/b/randalli/archive/2010/09/09/updated-sharepoint-2010-sdk-now-available-for-download.aspx" title="Randall Isenhour" target="_blank"&gt;Randall&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;La nuova versione dell'SDK vede queste novità:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;44 esempi di codice sorgente:&lt;/b&gt; esempi in Silverlight e di personalizzazioni che utilizzano i BCS, le feature di Enterprise Content Management (ECM), gli User Profile e i Social Data &lt;/li&gt;&lt;li&gt;&lt;b&gt;Documentazione aggiornata:&lt;/b&gt; nuovi how-to e articoli.&lt;/li&gt;&lt;li&gt;&lt;b&gt;File per l'intellisense aggiornati:&lt;/b&gt; per l'autocompletamento della scrittura del vostro codice sorgente o delle vostre personalizzazioni&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;La lista completa di tutti gli aggiornamenti la potete trovare qua:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ff847474.aspx" title="Whats New in the SDK for SharePoint Foundation 2010 " target="_blank"&gt;What's New in the SDK for SharePoint Foundation 2010&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ff847475.aspx" title="Whats New in the SDK for SharePoint Server 2010 " target="_blank"&gt;What's New in the SDK for SharePoint Server 2010&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/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SDK.aspx" title="TAG: SDK"&gt;SDK&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/UpdatedSharePoint2010SDKWith44SampleCodes.aspx" /><issued>2010-9-10T10:34:50+01:00</issued><modified>2010-9-10T10:34:50+01:00</modified></entry><entry><title>Come visualizzare tutte le informazioni sui risultati di una ricerca all'interno di una Search Results Web Part</title><id>/Blog/HowToViewAllSearchInfoIntoASearchResultsWebPart.aspx</id><created>2010-9-4T19:56:28+01:00</created><content type="text/html" mode="escaped">La Search Results web part è una delle web part che abbiamo a disposizione all'interno di MOSS 2007 e che possiamo utilizzare per visualizzare i risultati di una ricerca all'interno di una pagina custom del nostro sito SharePoint, senza utilizzare la pagina di ricerca di default o un sito di tipo Search Center. 
&lt;br /&gt;Tale web part è molto utile in quanto permette la customizzazione della visualizzazione dei risultati di una ricerca ricerca, tramite del codice XSLT per permettere l'inserimento di valori presi da campi particolari delle nostre liste o document library che normalmente non vengono visualizzati all'interno della pagina di ricerca di default. Oppure, semplicemente, per cambiare il layout con cui l'utente finale deve avere a che fare durante le sue ricerche.
&lt;br /&gt;
&lt;br /&gt;Una volta che iniziamo a sviluppare il codice XSLT utile a cambiare la visualizzazione dei risultati di un'eventuale ricerca, dobbiamo sapere che esiste un trucchetto per visualizzare quali sono tutte le informazioni che abbiamo a disposizione dal motore di ricerca di SharePoint e che possiamo utilizzare per modificare il rendering della pagina.
&lt;br /&gt;Per vedere tali informazioni, non dobbiamo far altro che inserire questo pezzo di codice XSLT all'interno della Search Results web part:
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="UTF-8"&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;xsl:stylesheet&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; xmlns:xsl&lt;span style='color:#0000FF'&gt;="http://www.w3.org/1999/XSL/Transform"&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;xsl:output&lt;/span&gt;&lt;span style='color:#FF0000'&gt; method&lt;span style='color:#0000FF'&gt;="xml"&lt;/span&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="UTF-8"&lt;/span&gt; indent&lt;span style='color:#0000FF'&gt;="yes"&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;xsl:template&lt;/span&gt;&lt;span style='color:#FF0000'&gt; match&lt;span style='color:#0000FF'&gt;="/"&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;xmp&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;xsl:copy-of&lt;/span&gt;&lt;span style='color:#FF0000'&gt; select&lt;span style='color:#0000FF'&gt;="*"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;xmp&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;xsl:template&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;xsl:stylesheet&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo tip è molto importante quando aggiungiamo delle managed properties al motore di indicizzazione di SharePoint e vogliamo vedere se effettivamente risultano disponibili tra i risultati di una specifica ricerca e, soprattutto, se vengono valorizzate.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Search.aspx" title="TAG: Search"&gt;Search&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToViewAllSearchInfoIntoASearchResultsWebPart.aspx" /><issued>2010-9-4T19:56:28+01:00</issued><modified>2010-9-4T19:56:28+01:00</modified></entry><entry><title>Le mie sessioni a WPC 2010 (Microsoft TechDays)</title><id>/Blog/MySessionsAtMicrosoftTechDaysWPC.aspx</id><created>2010-9-1T14:18:36+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.techdays-wpc.it/images/media/Attendee02.png" alt="Microsoft TechDays WPC 2010" style="float: right; margin: 5px" /&gt;E' da un pò che lo sapevo, ma ancora non era stato avvisato "ufficialmente" :)
&lt;br /&gt;Nei giorni 23, 24 e 25 di Novembre 2010, qui al Centro Congressi Milano Fiori (Milano) si terrà la 17° edizione di WPC, la più importante conferenza italiana legata al mondo Microsoft organizzata da Microsoft stessa in collaborazione con Overnet Eduction.
&lt;br /&gt;Ecco.. quest'anno &lt;a href="http://www.techdays-wpc.it/speakers.aspx" title="Elenco speaker della Microsoft TechDays WPC 2010" target="_blank"&gt;ci sono anche io&lt;/a&gt; ! :)
&lt;br /&gt;Terrò queste due sessioni per sviluppatori SharePoint 2010:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;b&gt;Introduzione al Client Object Model di SharePoint 2010&lt;/b&gt;
&lt;br /&gt;Tanto codice per un'introduzione alle tecniche di utilizzo del Client Object Model di SharePoint 2010 per la realizzazione di personalizzazioni lato client utilizzando javascript, silverlight o applicazioni desktop.
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Silverlight loves SharePoint 2010&lt;/b&gt;
&lt;br /&gt;Una sessione con tanto codice per vedere come la nuova versione di SharePoint si sposa con Silverlight 4, in modo da fruire agli utenti delle Rich Internet Application utili, facili da usare e veramente di impatto, in grado di interfacciarsi con i dati del prodotto di collaborazione Microsoft.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Vi terrò aggiornati per date e ore.
&lt;br /&gt;Se pensate di venire, correte ad iscrivervi che è ancora in corso la sconto di circa 20% del prezzo pieno.
&lt;br /&gt;Se volete vedere tutti gli altri argomenti o avere qualche informazione in più, questo è il sito dell'evento: &lt;a href="http://www.techdays-wpc.it/" title="Microsoft TechDays WPC 2010" target="_blank"&gt;http://www.techdays-wpc.it/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/WPC 2010.aspx" title="TAG: WPC 2010"&gt;WPC 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&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/MySessionsAtMicrosoftTechDaysWPC.aspx" /><issued>2010-9-1T14:18:36+01:00</issued><modified>2010-9-1T14:18:36+01:00</modified></entry><entry><title>The evaluation version of Microsoft Office SharePoint Server 2007 for this server has expired</title><id>/Blog/TheEvaluationVersionOfMOSS2007ForThisServerHasExpired.aspx</id><created>2010-8-30T11:57:1+01:00</created><content type="text/html" mode="escaped">Se, cercando di aprire il vostro "My Site" da una qualsiasi pagina della site collection SharePoint 2007, vi trovate di fronte a questo errore (e siete sicuri di avere una versione di MOSS valida):
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The evaluation version of Microsoft Office SharePoint Server 2007 for this server has expired&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/EvaluationVersionExpired.jpg" alt="The evaluation version of Microsoft Office SharePoint Server 2007 for this server has expired" /&gt;
&lt;br /&gt;
&lt;br /&gt;per prima cosa: non spaventatevi ! :)
&lt;br /&gt;La vostra versione di MOSS 2007 non è scaduta, ma c'è solamente qualcosina che non va.. infatti, nonostante questo errore, vi accorgerete che siete in grado comunque di creare nuove site collection e nuovi siti, dare permessi, creare liste, ecc.. come avete sempre fatto fin'ora.
&lt;br /&gt;Per risolvere questo problema, che impedisce totalmente la navigazione all'interno del proprio "My Site" per tutti gli utenti, è necessario aprire il registro di sistema e cambiare i permessi della chiave di registro "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\12.0" in questa maniera:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lettura al gruppo WSS_WPG&lt;/li&gt;&lt;li&gt;Controllo completo al gruppo WSS_ADMIN_WPG&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Spero possa essere utile a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/My site.aspx" title="TAG: My site"&gt;My site&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/TheEvaluationVersionOfMOSS2007ForThisServerHasExpired.aspx" /><issued>2010-8-30T11:57:1+01:00</issued><modified>2010-8-30T11:57:1+01:00</modified></entry><entry><title>Provisioning di un campo RichText in SharePoint 2010</title><id>/Blog/RichTextFieldProvisioningInSharePoint2010.aspx</id><created>2010-8-27T8:56:33+01:00</created><content type="text/html" mode="escaped">Un campo di tipo RichText in SharePoint non è altro che un campo multilinea con abilitato l'editor di testo completo per la rappresentazione di contenuti "ricchi", quindi testi formattati, link, immagini, tabelle, ecc..
&lt;br /&gt;Per effettuare il provisioning di un campo del genere all'interno delle nostre list definition o all'interno dei nostri content type, basta creare un campo di tipo "Note" ed aggiungere le proprietà "RichText" e "RichTextMode", valorizzandole rispettivamente a "TRUE" e "FullHtml".
&lt;br /&gt;Come si suol dire, un esempio vale più di mille parole.. ecco quindi la sintassi del nostro campo:
&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;Field&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ID&lt;span style='color:#0000FF'&gt;="8EAA0ED0-A045-43AD-BA82-44CFAF312908"&lt;/span&gt; 
&lt;br /&gt;       Type&lt;span style='color:#0000FF'&gt;="Note"&lt;/span&gt;
&lt;br /&gt;       DisplayName&lt;span style='color:#0000FF'&gt;="Sample Rich Text Field"&lt;/span&gt;
&lt;br /&gt;       Name&lt;span style='color:#0000FF'&gt;="SampleRichTextField"&lt;/span&gt;
&lt;br /&gt;       StaticName&lt;span style='color:#0000FF'&gt;="SampleRichTextField"&lt;/span&gt;
&lt;br /&gt;       Group&lt;span style='color:#0000FF'&gt;="PeppeDotNet.it - Sample Fields"&lt;/span&gt;
&lt;br /&gt;       RichText&lt;span style='color:#0000FF'&gt;="TRUE"&lt;/span&gt;
&lt;br /&gt;       RichTextMode&lt;span style='color:#0000FF'&gt;="FullHtml"&lt;/span&gt;
&lt;br /&gt;       Sealed&lt;span style='color:#0000FF'&gt;="FALSE"&lt;/span&gt;
&lt;br /&gt;       SourceID&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/sharepoint/v3"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt; 
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Se inseriamo questa definizione di campo all'interno di una feature e la attiviamo (o a livello di site collection o a livello di singolo sito), troveremo il nostro campo di tipo RichText tra le site column disponibili.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/richTextFieldInstalled.jpg" alt="Campo di tipo RichText correttamente installato" /&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere, il tipo di formattazione del testo specificato è proprio "Enhanced rich text (Rich text with pictures, tables and hyperlinks)".
&lt;br /&gt;Se poi decidiamo semplicemente di inserire il nostro campo all'interno di una lista SharePoint 2010 o se abbiamo intenzione di creare un content type ed inserirci il riferimento al nostro campo di tipo RichText, avremmo a disposizione l'editor di testo avanzato all'interno della barra dei ribbon, in fase di inserimento o di modifica.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/richTextField.jpg" alt="Campo di tipo RichText in funzione" /&gt;
&lt;br /&gt;
&lt;br /&gt;A titolo d'esempio, ho creato una soluzione SharePoint 2010 contenente il campo di tipo RichText, un content type d'esempio e una list definition creata a partire da questo content type.
&lt;br /&gt;Trovate i sorgenti a questo indirizzo: &lt;a href="http://www.peppedotnet.it/zip/PeppeDotNet.Provisioning.RichText.zip" title="Sorgenti per il provisioning di un campo di tipo RichText"&gt;http://www.peppedotnet.it/zip/PeppeDotNet.Provisioning.RichText.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Provisioning.aspx" title="TAG: Provisioning"&gt;Provisioning&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Site column.aspx" title="TAG: Site column"&gt;Site column&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content type.aspx" title="TAG: Content type"&gt;Content type&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/RichTextFieldProvisioningInSharePoint2010.aspx" /><issued>2010-8-27T8:56:33+01:00</issued><modified>2010-8-27T8:56:33+01:00</modified></entry><entry><title>Operation aborted (Exception from HRESULT: 0&#215;80004004 (E_ABORT))</title><id>/Blog/OperationAbortedExceptionFromHRESULT0x80004004EABORT.aspx</id><created>2010-8-25T12:12:46+01:00</created><content type="text/html" mode="escaped">Sviluppando su SharePoint (WSS 3.0 o MOSS 2007) tramite il modello ad oggetti lato server, il più delle volte in ambiente di test (dove sono solito incasinare più o meno tutto e non controllare mai nulla :), mi è capitato di trovarmi di fronte a questo messaggio di errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Operation aborted (Exception from HRESULT: 0×80004004 (E_ABORT))
&lt;br /&gt;
&lt;br /&gt;System.Runtime.InteropServices.COMException : Operation aborted (Exception from HRESULT: 0×80004004 (E_ABORT))
&lt;br /&gt;at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateRoleAssignment(String bstrUrl, Guid&amp; pguidScopeId, Int32 lPrincipalID, Object&amp; pvarArrIdRolesToAdd, Object&amp; pvarArrIdRolesToRemove)
&lt;br /&gt;at Microsoft.SharePoint.Library.SPRequest.UpdateRoleAssignment(String bstrUrl, Guid&amp; pguidScopeId, Int32 lPrincipalID, Object&amp; pvarArrIdRolesToAdd, Object&amp; pvarArrIdRolesToRemove)&lt;/div&gt;
&lt;br /&gt;In questo caso specifico, trovavo questa eccezione quando cercavo di modificare i permessi di un elemento SharePoint via codice, o quando cercavo di rompere l'ereditarietà di un elemento dall'elemento padre, ma vi può capitare durante uno qualsiasi degli update che cercate di fare sul database di SharePoint tramite il modello ad oggetti.
&lt;br /&gt;Cercando un pò su internet, ho trovato le due possibili cause per questo errore:
&lt;br /&gt;
&lt;br /&gt;1- il database log legato al db di contenuto di SharePoint risulta essere pieno.
&lt;br /&gt;2- l'account con cui cercate di accedere al database dei contenuti non ha permessi per accedere.
&lt;br /&gt;
&lt;br /&gt;Il mio caso era il primo, quindi è bastato un backup del database per liberare lo spazio nel database log.
&lt;br /&gt;Per vedere bene cosa succede a SharePoint, quando capitano questi tipi di errori, vi consiglio di utilizzare l'utility SPTraceView che trovate su codeplex a questo indirizzo:
&lt;br /&gt;&lt;a href="http://sptraceview.codeplex.com/" title="SPTraceView" target="_blank"&gt;http://sptraceview.codeplex.com/&lt;/a&gt;
&lt;br /&gt;che vi permettere di visualizzare in tempo reale gli errori che accadono su SharePoint.
&lt;br /&gt;Spero possa essere utilie a qualcuno..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OperationAbortedExceptionFromHRESULT0x80004004EABORT.aspx" /><issued>2010-8-25T12:12:46+01:00</issued><modified>2010-8-25T12:12:46+01:00</modified></entry><entry><title>Upgrade di template a SharePoint 2010 e i 40 template per WSS 3</title><id>/Blog/SiteTemplateUpgradeToSharePoint2010And40TemplateForWSS3.aspx</id><created>2010-8-23T11:42:12+01:00</created><content type="text/html" mode="escaped">Ne ho parlato alla scorsa &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference" target="_blank"&gt;SharePoint Conference italiana&lt;/a&gt; e ancora l'argomento è molto caldo.
&lt;br /&gt;A fronte di un upgrade di un'installazione SharePoint 2007 (WSS o MOSS) a SharePoint 2010 i template di sito .STP non vengono portati !
&lt;br /&gt;Per effettuarne l'upgrade quindi, dobbiamo seguire questo percorso di operazioni:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/UpgradeSTP.jpg" alt="STP Template upgrade path" /&gt;
&lt;br /&gt;
&lt;br /&gt;Il che ci permette di portare quei siti che erano stati creati a partire dal template .STP nella vecchia versione del programma e poi salvarli come template secondo le nuove specifiche di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Parlando di template .STP vengono subito in mente i 40 template che Microsoft aveva rilasciato per Windows SharePoint Services 3.0  e che la maggior parte di voi avrà sicuramente utilizzato.
&lt;br /&gt;Siccome Microsoft non sta aggiornando questi template e sopratutto perchè non ci sono neanche delle voci che ad oggi abbia deciso di farlo, è necessario porsi il problema di come aggiornare questi template se vogliamo passare le nostre farm a SharePoint 2010.
&lt;br /&gt;Questo gruppo di template, per fortuna, non era però composto solamente da file .STP ma c'erano anche molte soluzioni SharePoint con estensione .WSP che ci facilitano notevolmente il lavoro. Si perchè possiamo tranquillamente aggiornare i siti creati sia a partire da un .STP che da un .WSP, ma i primi non possono più essere riutilizzati una volta che la farm è stata aggiornata, mentre i secondi si ! E questo è bene che lo sappiate.
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-style: italic; margin-left: 10px"&gt;Nota: in fase di upgrade, alcuni hanno notato l'impossibilità di riutilizzare questi template .WSP: : Absence Request and Vacation Schedule Management, Call Center, Help Desk, IT Team Workspace, Knowledge Base, and Physical Asset Tracking and Management&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Se invece siete pigri :) ..c'è qualcuno che ha fatto un pò di lavoro di upgrade per noi:
&lt;br /&gt;&lt;a href="http://techsolutions.net/Blog/tabid/65/EntryId/17/Fab-40-Templates-for-MOSS-2010.aspx" title="Fab 40 templates for SharePoint 2010" target="_blank"&gt;http://techsolutions.net/Blog/tabid/65/EntryId/17/Fab-40-Templates-for-MOSS-2010.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Upgrade.aspx" title="TAG: Upgrade"&gt;Upgrade&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/STP.aspx" title="TAG: STP"&gt;STP&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSP.aspx" title="TAG: WSP"&gt;WSP&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SiteTemplateUpgradeToSharePoint2010And40TemplateForWSS3.aspx" /><issued>2010-8-23T11:42:12+01:00</issued><modified>2010-8-23T11:42:12+01:00</modified></entry><entry><title>Come disattivare l'attivazione di feature in fase di deploy in Visual Studio 2010</title><id>/Blog/HowToDisableFeatureActivationOnDeployInVisualStudio2010.aspx</id><created>2010-8-16T10:17:22+01:00</created><content type="text/html" mode="escaped">Quando sviluppiamo le nostre personalizzazioni su SharePoint 2010 utilizzando gli strumenti messi a disposizione da Visual Studio 2010, ci accorgiamo che tutte le nostre feature vengono attivate in automatico ogni volta che viene lanciata l'operazione di deploy della soluzione sul sito SharePoint scelto in fase di creazione del progetto.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/ActivateFeatureVS2010.jpg" alt="Attivazione automatica della feature in fase di deployment da Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Questa è la configurazione di default che abbiamo all'interno dei tool di sviluppo per SharePoint 2010. Molte volte però, questa configurazione può impedire le nostre azioni di debug del codice o delle funzionalità implementate.
&lt;br /&gt;Pensiamo solo allo sviluppo di un event receiver che gestisce gli eventi di attivazione o di disattivazione della feature. In questo caso specifico ad esempio, non siamo in grado di fare debug del nostro codice, in quanto Visual Studio 2010 non permette di effettuare l'operazione di deployment e quella di debug contemporaneamente.
&lt;br /&gt;Proprio per ovviare a questo problema, è possibile modificare tale configurazione e scegliere di non attivare la feature in automatico. Per farlo basta entrare nelle proprietà del progetto dalla toolbox "Solution Explorer", scegliere il tab "SharePoint" e selezionare la configurazione "No Activation".
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/ActivateFeatureVS2010_2.jpg" alt="Cambio della configurazione di deployment delle soluzioni SharePoint 2010 in Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, ad ogni successivo deployment non verranno attivate le feature della nostra soluzione in automatico, ma potremmo farlo noi da interfaccia web (o tramite l'utility STSADM o, ancora, tramite PowerShell) per poi metterci in debug del nostro codice.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/ActivateFeatureVS2010_3.jpg" alt="Mancata attivazione automatica della feature in fase di deployment da Visual Studio 2010" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così come abbiamo potuto disabilitare l'attivazione in automatico della feature all'interno del sito SharePoint scelto in fase di creazione del progetto, abbiamo anche la possibilità di creare configurazioni personalizzate in cui inserire operazioni di deploy e retract della soluzione, reciclo degli application pool, attivazione di feature e esecuzione di comandi pre/post deployment.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Feature.aspx" title="TAG: Feature"&gt;Feature&lt;/a&gt;] [&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/HowToDisableFeatureActivationOnDeployInVisualStudio2010.aspx" /><issued>2010-8-16T10:17:22+01:00</issued><modified>2010-8-16T10:17:22+01:00</modified></entry><entry><title>Annunciate le date della prossima SharePoint Conference italiana</title><id>/Blog/AnnunciateLeDateDellaProssimaSharePointConferenceItaliana.aspx</id><created>2010-8-15T12:33:13+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/SPOC2011_small.png" alt="SharePoint Conference 2010" style="float: right; margin: 2px" /&gt;L'annuncio è stato già dato da &lt;a href="http://blogs.devleap.com/igor/archive/2010/08/09/annunciata-la-prossima-edizione-italiana-della-microsoft-sharepoint-amp-office-conference-2011.aspx" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt; e all'interno di &lt;a href="http://www.sharepointcommunity.it/news/Lists/News/DispForm.aspx?ID=8" title="Annuncio SharePoint Conference 2010 su SharePointCommunity.it" target="_blank"&gt;SharePoint Community&lt;/a&gt;.
&lt;br /&gt;La prossima edizione della Microsoft SharePoint &amp; Office Conference 2011 si svolgerà in parallelo alla Microsoft SQL Server &amp; Business Intelligence Conference 2011, sempre qui a Milano dal &lt;b&gt;19 al 21 Aprile 2011&lt;/b&gt;. Quindi salvatevi queste date che se ne vedranno sicuramente delle belle !
&lt;br /&gt;I contenuti saranno sicuramente di alto livello e sarà un momento ottimo per rincontrarsi con la community nata esattamente nella scorsa edizione della conferenza.
&lt;br /&gt;
&lt;br /&gt;Inoltre, come lo scorso anno, è stato anche aperto il call for paper per la raccolta delle vostre candidature come speaker o se semplicemente avete particolari argomenti da proporre.
&lt;br /&gt;Questo l'indirizzo:
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/2011/CFP/Pages/cfp.aspx" title="Call for paper SharePoint Conference 2010 Italiana" target="_blank"&gt;http://www.sharepointconference.it/2011/CFP/Pages/cfp.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Manca ancora tanto, è vero.. però è sempre meglio tenersi pronti ;)
&lt;br /&gt;Buon ferragosto a tutti !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AnnunciateLeDateDellaProssimaSharePointConferenceItaliana.aspx" /><issued>2010-8-15T12:33:13+01:00</issued><modified>2010-8-15T12:33:13+01:00</modified></entry><entry><title>Come abilitare le informazioni per il debug di un'eccezione in SharePoint 2010</title><id>/Blog/HowToEnableExceptionInformationForDebugInSharePoint2010.aspx</id><created>2010-8-5T14:52:23+01:00</created><content type="text/html" mode="escaped">SharePoint ha sempre nascosto i messaggi di errore veri e propri e tutte le informazioni relative al debug dell'errore stesso, per mantenere un buon rapporto con l'utente finale che il più delle volte si spaventa alla vista di tutte quelle scritte preferendo la solita frase "an error has occourred".
&lt;br /&gt;Sappiamo già com'è possibile &lt;a href="http://www.peppedotnet.it/Blog/AnUnexpectedErrorHasOccurred.aspx" title="Come visualizzare informazioni su errori in WSS 3.0 o MOSS 2007" target="_blank"&gt;visualizzare per esteso le informazioni degli errori in WSS 3.0/MOSS 2007&lt;/a&gt;, modificando il file web.config proprio della web application su cui stiamo facendo operazione di debug.
&lt;br /&gt;In SharePoint 2010 invece, è necessario modificare due differenti web.config:
&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Quello presente nella directory legata alla vostra web application SharePoint (se non cambiate il percorso di default, troverete il web.config da modificare al percorso: 
&lt;br /&gt;"[drive]:\inetpub\wwwroot\wss\virtualdirectories\[port]")&lt;/li&gt;&lt;li&gt;Quello presente all'interno della directory "LAYOUTS" posta sotto la SharePoint root (cioè il file presente al percorso:
&lt;br /&gt;"[drive]:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS")&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Quello che rimane invariato rispetto alla versione precedente di SharePoint, sono gli attributi da modificare all'interno del file web.config:&lt;ol&gt;&lt;li&gt;L'attributo "Debug" dell’elemento "Compilation" va portato a "true"&lt;/li&gt;&lt;li&gt;L'attributo "CallStack" dell'elemento "SafeMode" va portato a "true"&lt;/li&gt;&lt;li&gt;L'attributo "Mode" dell'elemento "CustomErrors" va portato a "Off"&lt;/li&gt;&lt;/ol&gt;
&lt;br /&gt;Così facendo, la schermata di errore classico passerà da..
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/DebugInfo1.jpg" alt="Error message SharePoint 2010" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;a..
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/DebugInfo2.jpg" alt="Debug Information SharePoint 2010" borer="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete invece maggiori informazioni sull'esecuzione della pagina, potete abilitare la developer dashboard (una delle novità si SharePoint 2010 per sviluppatori). Se volete informazioni a riguardo, ne potete trovera all'interno della documentazione: &lt;a href="http://msdn.microsoft.com/en-us/library/ff512745.aspx" title="Using the Developer Dashboard" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/ff512745.aspx&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/HowToEnableExceptionInformationForDebugInSharePoint2010.aspx" /><issued>2010-8-5T14:52:23+01:00</issued><modified>2010-8-5T14:52:23+01:00</modified></entry><entry><title>Errore &quot;Security error&quot; utilizzando il Client Object Model di SharePoint 2010 per Silverlight</title><id>/Blog/SecurityErrorUsingSharePoint2010ClientObjectModelForSilverlight.aspx</id><created>2010-8-3T15:39:38+01:00</created><content type="text/html" mode="escaped">Se iniziate ad utilizzare il modello ad oggetti client-side di SharePoint 2010 per applicazioni Silverlight e provate ad istanziare un nuovo oggetto di tipo "ClientContext" passando come parametro al costruttore principale l'indirizzo di un sito SharePoint remoto (senza far girare l'applicazione Silverlight all'interno del contesto di SharePoint) ...
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;ClientContext context = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ClientContext(&lt;span style="color: #A31515"&gt;"http://sharepoint2010"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #008200"&gt;//…&lt;/span&gt;
context.ExecuteQueryAsync(...); &lt;span style="color: #008200"&gt;//errore&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;vi troverete a fare i conti con questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;{System.Security.SecurityException ---&gt; System.Security.SecurityException: Security error.
&lt;br /&gt;at System.Net.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
&lt;br /&gt;at System.Net.BrowserHttpWebRequest.&lt;&gt;c__DisplayClass5.b__4(Object sendState)
&lt;br /&gt;at System.Net.AsyncHelper.&lt;&gt;c__DisplayClass2.b__0(Object sendState)
&lt;br /&gt;--- End of inner exception stack trace ---
&lt;br /&gt;at System.Net.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
&lt;br /&gt;at System.Net.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
&lt;br /&gt;at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
&lt;br /&gt;at System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult result)}&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;L'errore viene scatenato alla chiamata del metodo ExecuteQueryAsync per l'esecuzione della query dall'applicazione client a SharePoint 2010.
&lt;br /&gt;Ecco, è bene sapere che questo errore può accadere per due principali motivi:
&lt;br /&gt;1- L'indirizzo che avete inserito come parametro del costruttore principale della classe ClientContext non esiste, non funziona o non è raggiungibile tramite browser.
&lt;br /&gt;2- Non avete inserito alcun file di policy ("ClientAccessPolicy.xml") per regolamentare le connessioni ai web services di SharePoint dall'esterno, nella directory della vostra web application.
&lt;br /&gt;
&lt;br /&gt;Come è possibile leggere dal punto 2, per consumare un web services (che sia o meno esposto da SharePoint) all'interno di un'applicazione Silverlight, è necessario che il web server che lo ospita abbia un file di policy che regolamenta la possibilità di utilizzo o meno del web service stesso da applicazioni remote. Questo file è il file "ClientAccessPolicy.xml", che e va creato all'interno della root della nostra applicazione web.
&lt;br /&gt;Siccome il modello ad oggetti client-side ha, al suo interno, una classe proxy che si occupa di chiamare il servizio "Client.svc" esposto da SharePoint 2010 e leggerne le risposte, anche tutte le applicazioni che ne utilizzano i vari membri dovranno fare i conti con il medesimo modello di policy, in quanto pur scrivendo codice che mantiene il paradigma ad oggetti, alla fine vengono comunque fatte delle chiamate ad servizio web (in questo caso un servizio WCF). Per un introduzione sull'architettura del modello ad oggetti client-side di SharePoint 2010, trovate un articolo su &lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" title="Introduzione al Client Object Model di SharePoint 2010" target="_blank"&gt;SharePoint Community&lt;/a&gt;.
&lt;br /&gt;Quindi, in ambiente di sviluppo, potete mettere un file nominato "ClientAccessPolicy.xml" all'interno della root della vostra web application SharePoint. Questo un'esempio classico:
&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;xml&lt;/span&gt;&lt;span style='color:#FF0000'&gt; version&lt;span style='color:#0000FF'&gt;="1.0"&lt;/span&gt; encoding&lt;span style='color:#0000FF'&gt;="utf-8"&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;access-policy&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;cross-domain-access&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;policy&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;allow-from&lt;/span&gt;&lt;span style='color:#FF0000'&gt; http-request-headers&lt;span style='color:#0000FF'&gt;="*"&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;domain&lt;/span&gt;&lt;span style='color:#FF0000'&gt; uri&lt;span style='color:#0000FF'&gt;="*"&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;allow-from&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;grant-to&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;resource&lt;/span&gt;&lt;span style='color:#FF0000'&gt; path&lt;span style='color:#0000FF'&gt;="/"&lt;/span&gt; include-subpaths&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;grant-to&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;policy&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;cross-domain-access&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;access-policy&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt; &lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Prima di procedere, provate a raggiungere tale file tramite il browser in modo tale da essere sicuri che possa essere letto da tutti, utilizzando questo indirizzo:
&lt;br /&gt;
&lt;br /&gt;http://[servername]/ClientAccessPolicy.xml
&lt;br /&gt;
&lt;br /&gt;E poi fate un bel IISRESET.
&lt;br /&gt;
&lt;br /&gt;Se siete in produzione invece, è meglio seguire le linee guida date da Microsoft per il posizionamento e la stesura del contenuto del file "ClientAccessPolicy.xml".
&lt;br /&gt;Trovate invece più informazioni riguardo il modello di sicurezza per l'accesso a risorse esterne tramite applicazioni Silverlight qua: &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx" title="Network Security Access Restrictions in Silverlight" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&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/Client  Object Model.aspx" title="TAG: Client  Object Model"&gt;Client  Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SecurityErrorUsingSharePoint2010ClientObjectModelForSilverlight.aspx" /><issued>2010-8-3T15:39:38+01:00</issued><modified>2010-8-3T15:39:38+01:00</modified></entry><entry><title>Come spostare un sito SharePoint all’interno della stessa site collection da codice</title><id>/Blog/HowToMoveSharePointSiteProgrammaticallyWithinTheSameSiteCollection.aspx</id><created>2010-8-2T16:42:12+01:00</created><content type="text/html" mode="escaped">Un pò di tempo fa abbiamo visto com'è possibile muovere un sito SharePoint o alcuni dei suoi principali oggetti (liste, documenti, elementi, ecc..) da programma, utilizzando le &lt;a href="http://www.peppedotnet.it/Blog/SharePointAPIforContentDeploymentAndMigrations.aspx" title="API per la migrazione e il deployment dei contenuti" target="_blank"&gt;API per la migrazione e il deployment dei contenuti&lt;/a&gt; esposte da SharePoint.
&lt;br /&gt;Le medesime operazioni di spostamento, come dovremmo sapere, è possibile effettuarle anche utilizzando le operazioni di backup e restore dell'utility STSADM, quelle presenti all'interno della Central Administration, quelle che potete invece trovare all'interno di SharePoint Designer oppure (ma solo se avete MOSS 2007 e le feature di publishing attivate a livello di site collection) tramite il tool di gestione del contenuto di SharePoint, il tool "Site manager" (che potete raggiungere selezionando "Site settings" - "Content and structure").
&lt;br /&gt;
&lt;br /&gt;Ma, se vogliamo scrivere un'applicazione custom che effettui lo spostamento di un sito all'interno della stessa Site Collection, SharePoint ci mette a disposizione un'ulteriore tecnica molto più facile all'uso che viene chiamata "reparent" (che, devo dir verità, non so come si può tradurre in italiano :)
&lt;br /&gt;Tramite questa tecnica, possiamo spostare un sito SharePoint all'interno della stessa site collection senza effettuare alcun tipo di backup o restore.
&lt;br /&gt;Per utilizzarla, non dobbiamo far altro che inserire all'interno della nostra applicazione il seguente codice (una volta aggiunta la referenza alla libreria Microsoft.SharePoint.dll):
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; oldUrl = &lt;span style="color: #A31515"&gt;"http://servername/DaSpostare/"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; newUrl = &lt;span style="color: #A31515"&gt;"Peppe/Spostato"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(oldUrl))
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())
&lt;br /&gt;{
&lt;br /&gt;  web.ServerRelativeUrl = newUrl;
&lt;br /&gt;  web.Update();
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo esempio, viene spostato il sito dall'indirizzo "http://servername/DaSpostare" all'indirizzo "http://servername/Peppe/Spostato".
&lt;br /&gt;Quindi, semplicemente modifcando il valore della proprietà "ServerRelativeUrl" di un oggetto di tipo SPWeb siamo in grado di muovere il sito all'interno della medesima Site Collection mantenendone intatte le proprietà, i permessi e i contenuti.
&lt;br /&gt;Chiaramente, il nuovo indirizzo assegnato al sito da spostare deve essere valido fino al nome del sito una volta spostato. Per esempio, se io voglio spostare il sito "http://servername/daspostare" all'indirizzo: "http://servername/sito/peppe/test",  i siti "http://server/sito" e "http://server/sito/peppe" devono esistere !
&lt;br /&gt;
&lt;br /&gt;La stessa tecnica, può essere utilizzata da riga di comando tramite l'utility STSADM in questo modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o renameweb -url http://servername/daSpostare -newname Peppe
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; 
&lt;br /&gt;Che sposta il sito all'indirizzo "http://servername/Peppe".
&lt;br /&gt;
&lt;br /&gt;Non male, eh ?
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/STSADM.aspx" title="TAG: STSADM"&gt;STSADM&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToMoveSharePointSiteProgrammaticallyWithinTheSameSiteCollection.aspx" /><issued>2010-8-2T16:42:12+01:00</issued><modified>2010-8-2T16:42:12+01:00</modified></entry><entry><title>Operazioni CRUD con il Client Object Model di SharePoint 2010</title><id>/Blog/CRUDOperationsWithSharePoint2010ClientObjectModel.aspx</id><created>2010-8-2T11:46:30+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" alt="SharePoint Community" style="float: right; margin: 5px;" /&gt;Dopo &lt;a href="http://www.peppedotnet.it/Blog/IntroduzioneAlleClientSideAPIdiSharePoint2010.aspx" title="Introduzione alle Client-Side API di SharePoint 2010 " target="_blank"&gt;l'articolo di introduzione sulle API per la programmazione client-side di SharePoint 2010&lt;/a&gt;, ecco il mio secondo articolo sul tema pubblicato su &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt;. Questa volta però, è incentrato sulle operazioni di base che si possono fare su liste SharePoint utilizzando il Client Object Model e una banalissima applicazione Windows. 
&lt;br /&gt;Ho scelto di scriverci un articolo proprio perchè le operazioni CRUD (Create, Read, Update, Delete) su liste, sono veramente le azioni che si fanno più spesso quando si sviluppano applicazioni che hanno a che fare con SharePoint e penso che sicuramente sarà utile a molti.
&lt;br /&gt;Qui il link per l'articolo:
&lt;br /&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12" title="" target="_blank"&gt;http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=12&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete scaricare i sorgenti invece, potete farlo direttamente da qua (sono gli stessi esempi visti all'interno della mia sessione per l'evento GroundZero di DotNetLombardia):
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/zip/Dev4Side.GroundZero.zip" title="Sorgenti operazioni CRUD tramite il Client Object Model di SharePoint 2010" target="_blank"&gt;http://www.peppedotnet.it/zip/Dev4Side.GroundZero.zip&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Finalmente, sto per andare in vacanza anche io.. verso mare stupendo spero.
&lt;br /&gt;Ci si risente tra un pò ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CRUDOperationsWithSharePoint2010ClientObjectModel.aspx" /><issued>2010-8-2T11:46:30+01:00</issued><modified>2010-8-2T11:46:30+01:00</modified></entry><entry><title>Introduzione alle Client-Side API di SharePoint 2010</title><id>/Blog/IntroduzioneAlleClientSideAPIdiSharePoint2010.aspx</id><created>2010-7-26T16:40:30+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" alt="SharePoint Community" style="margin: 10px; float: right" /&gt; E' appena stato pubblicato un mio nuovo articolo su SharePoint 2010 all'interno di &lt;a href="http://www.sharepointcommunity.it/" title="SharePoint Community.it" target="_blank"&gt;SharePoint Community&lt;/a&gt;.
&lt;br /&gt;E' una breve introduzione sulle API esposte dalla nuova versione di SharePoint, per lo sviluppo di applicazioni client-side che girano su Windows o all'interno del browser (Silverlight o personalizzazioni Javascript).
&lt;br /&gt;Seguirà un secondo articolo, dove sarà possibile vedere il codice per effettuare le normali operazioni di tipo CRUD su liste SharePoint utilizzando uno dei tre modelli ad oggetti per lo sviluppo lato client (per esser precisi quello per lo sviluppo di applicazioni Windows).
&lt;br /&gt;Qua il link all'articolo:
&lt;br /&gt;&lt;a href="http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11" title="Introduzione alle Client-Side API di SharePoint 2010" target="_blank"&gt;http://www.sharepointcommunity.it/articles/Lists/Articles/DispForm.aspx?ID=11&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'introduzione delle API per la programmazione client-side sono sicuramente la novità che, personalmente, ho apprezzato di più all'interno di SharePoint 2010. 
&lt;br /&gt;Non si parla più di web services, di dover formattare e parsare tutto quell'xml per interrogare SharePoint dall'esterno e leggere i risultati delle nostre interrogazioni, il tutto mantenedo il paradigma della programmazione ad oggetti, proprio come siamo sempre stati abituati utilizzando il modello ad oggetti lato server.
&lt;br /&gt;Il che è fantastico ! No ? :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS:  [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Client Object Model.aspx" title="TAG: Client Object Model"&gt;Client Object Model&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/IntroduzioneAlleClientSideAPIdiSharePoint2010.aspx" /><issued>2010-7-26T16:40:30+01:00</issued><modified>2010-7-26T16:40:30+01:00</modified></entry><entry><title>Errore: &quot;The crawler could not communicate with the server&quot;</title><id>/Blog/ErrorTheCrawlerCouldNotCommunicateWithTheServer.aspx</id><created>2010-7-24T17:28:38+01:00</created><content type="text/html" mode="escaped">Se, guardando il log dell'indicizzazione prodotto dal servizio di ricerca di MOSS 2007 su uno dei content source che avete configurato, vi trovate un errore di questo tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The crawler could not communicate with the server. Check that the server is available and that the firewall access is configured correctly&lt;/div&gt;
&lt;br /&gt;controllate subito l'indirizzo che viene specificato come fonte dell'errore cercando di raggiungerlo tramite browser utilizzando la connessione in desktop remoto sulle vostre macchine che si occupano dell'indicizzazione. 
&lt;br /&gt;Probabilmente avete una farm dove uno o più server si occupano di fornire la parte front-end di SharePoint e uno o più server quella di indicizzazione. E magari l'indirizzo che vedete come fonte dell'errore, se raggiunto dalle macchine client, vi risulterà sicuramente funzionante.
&lt;br /&gt;Ma se provate a raggiungerlo da una delle macchine di indicizzazione, vedrete che vi ritornerà un errore di tipo 5xx.
&lt;br /&gt;Quindi cercate di capire il perchè di quell'errore 500 e, una volta corretto, fate ripartire l'indicizzazione.
&lt;br /&gt;Nel mio caso, era stato stoppato l'application pool ed è bastato semplicemente riavviarlo.
&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/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS 2007.aspx" title="TAG: MOSS 2007"&gt;MOSS 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Search.aspx" title="TAG: Search"&gt;Search&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorTheCrawlerCouldNotCommunicateWithTheServer.aspx" /><issued>2010-7-24T17:28:38+01:00</issued><modified>2010-7-24T17:28:38+01:00</modified></entry><entry><title>Slide e demo della mia sessione all'evento GroundZero di DotNetLombardia</title><id>/Blog/SlidesAndDemosOfMySessionAtDotNetLombardia.aspx</id><created>2010-7-22T23:6:0+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/images/devordie.jpg" alt="Dev or Die !" style="float: right; margin: 5px;" /&gt;Oggi era il giorno di &lt;a href="http://groundzero.dotnetlombardia.org/" title="GroundZero - DotNetLombardia" target="_blank"&gt;GroundZero&lt;/a&gt;, l'evento organizzato dai ragazzi di &lt;a href="http://dotnetlombardia.org/" title="DotNetLombardia" target="_blank"&gt;DotNetLombardia&lt;/a&gt;, dove sono stato invitato per tenere una sessione sulle novità di SharePoint 2010 per sviluppatori.
&lt;br /&gt;Non sono riuscito a seguire tutte le sessioni, ma sicuramente è stato un inizio carino per questo nuovo user group, che avrà sicuramente tanto da dare. 
&lt;br /&gt;In tutto ciò, la sessione di &lt;a href="http://www.tostring.it/" title="Ugo Lattanzi" target="_blank"&gt;Ugo&lt;/a&gt; è stata veramente ottima !
&lt;br /&gt;Io ho dato il mio e spero che sia piaciuto.. :)
&lt;br /&gt;
&lt;br /&gt;Vi lascio qua le slide e i sorgenti delle demo che ho fatto durante la sessione. Le troverete anche su &lt;a href="http://www.sharepointcommunity.it" title="SharePointCommunity.it" target="_blank"&gt;SharePointCommunity.it&lt;/a&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/zip/GroundZeroDotNetLombardia.pdf" title="Slide in pdf evento DotNetLombardia"&gt;slide (pdf)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.peppedotnet.it/zip/Dev4Side.GroundZero.zip" title="Sorgenti delle demo eveno DotNetLombardia"&gt;sorgenti demo (zip)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Ringrazio ancora Roberto per avermi invitato.
&lt;br /&gt;Alla prossima !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&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/SlidesAndDemosOfMySessionAtDotNetLombardia.aspx" /><issued>2010-7-22T23:6:0+01:00</issued><modified>2010-7-22T23:6:0+01:00</modified></entry><entry><title>Le novit&#224; di SharePoint 2010 per dev a GroundZero: manca poco !</title><id>/Blog/LeNovitaDiSharePoint2010PerDevAGroundZeroMancaPoco.aspx</id><created>2010-7-20T12:30:6+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://groundzero.dotnetlombardia.org/_/rsrc/1277714575329/home/GroundZero.png" alt="GroundZero - DotNetLombardia" /&gt;
&lt;br /&gt;
&lt;br /&gt;Mancano solo 2 giorni all'evento &lt;a href="http://groundzero.dotnetlombardia.org/" title="GroundZero - DotNetLombardia" target="_blank"&gt;GroundZero&lt;/a&gt; organizzato dai ragazzi di DotNetLombardia !
&lt;br /&gt;Mi dicono che la sala ancora non è piena, quindi vi ricordo che potete ancora iscrivervi dal sito dell'evento:
&lt;br /&gt;&lt;a href="http://groundzero.dotnetlombardia.org/" title="GroundZero - DotNetLombardia" target="_blank"&gt;http://groundzero.dotnetlombardia.org/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Io ho slide e demo pronte da diciamo 10 minuti :)
&lt;br /&gt;Se seguite il sito e pensate di venire, mi raccomando fatevi riconoscere.. anche solo per un "ciao".
&lt;br /&gt;Ci vediamo la ! ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/DotNetLombardia.aspx" title="TAG: DotNetLombardia"&gt;DotNetLombardia&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/LeNovitaDiSharePoint2010PerDevAGroundZeroMancaPoco.aspx" /><issued>2010-7-20T12:30:6+01:00</issued><modified>2010-7-20T12:30:6+01:00</modified></entry><entry><title>Annunciato il rilascio dell'Administration Toolkit per SharePoint 2010</title><id>/Blog/AnnouncedAdministrationToolkitV1ForSharePoint2010.aspx</id><created>2010-7-16T10:49:24+01:00</created><content type="text/html" mode="escaped">Dal &lt;a href="http://blogs.msdn.com/b/sharepoint/archive/2010/07/15/announcing-the-release-of-the-sharepoint-2010-administration-toolkit-v1.aspx" title="Announcing the release of the SharePoint 2010 Administration Toolkit V1" target="_blank"&gt;blog del team di SharePoint&lt;/a&gt; è stato annunciato il rilascio della versione 1 dell'Administration Toolkit per SharePoint 2010.
&lt;br /&gt;Il toolkit vede una serie di nuovi tool per l'amministrazione di SharePoint 2010. Eccoli del dettaglio:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;User Profile Replication Engine 2010 (UPRE2010): tool per la replica dei profili utente e dei dati legati alla parte "social" di SharePoint 2010 tra differenti User Profile Application. Prevede inoltre la compatibilità con gli SSP di MOSS 2007 (ma solo per l'importazione dei profili utenti)&lt;/li&gt;&lt;li&gt;The Security Configuration (SCW) Manifest: SCW è un tool per la prevenzione agli attacchi che è stato introdotto su Windows Server. Questo manifest aggiunge ruoli specifici per SharePoint 2010 su SCW&lt;/li&gt;&lt;li&gt;The Content Management Interoperability Services (CMIS) Connector: tool che permette la lettura del contenuto di SharePoint 2010 per tutte le applicazioni che implementano lo standard CMIS&lt;/li&gt;&lt;li&gt;The Load Testing Kit (LTK): tool che genere un load test per Visual Studio Team Stystem 2008 basato sui log di IIS per siti WSS 3.0, utile per test di migrazione a SharePoint Foundation 2010&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Questo il link per il download:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=718447d8-0814-427a-81c3-c9c3d84c456e&amp;displaylang=en" title="Administration Toolkit V1 for SharePoint 2010" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=718447d8-0814-427a-81c3-c9c3d84c456e&amp;displaylang=en&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Qua invece la documentazione:
&lt;br /&gt;SharePoint Foundation 2010: &lt;a href="http://technet.microsoft.com/en-us/library/cc508986.aspx" title="Documentazione dell'Adminitration Toolkit per SharePoint Foundation 2010" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc508986.aspx&lt;/a&gt;
&lt;br /&gt;SharePoint Server 2010: &lt;a href="http://technet.microsoft.com/en-us/library/cc508851.aspx" title="Documentazione per Administration Toolkit per SharePoint Server 2010" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc508851.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Administration Toolkit.aspx" title="TAG: Administration Toolkit"&gt;Administration Toolkit&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AnnouncedAdministrationToolkitV1ForSharePoint2010.aspx" /><issued>2010-7-16T10:49:24+01:00</issued><modified>2010-7-16T10:49:24+01:00</modified></entry><entry><title>Update per SharePoint Foundation 2010 - KB2032588</title><id>/Blog/UpdateForSharePointFoundation2010KB2032588.aspx</id><created>2010-7-15T20:0:59+01:00</created><content type="text/html" mode="escaped">Due giorni fa, precisamente il 13 luglio 2010, è stato rilasciato un aggiornamento per SharePoint Foundation 2010 descritto da questo articolo della KB Microsoft:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/2032588" title="KB2032588" target="_blank"&gt;http://support.microsoft.com/kb/2032588&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;L'aggiornamento viene fatto tramite Microsoft Updates, quindi se avete gli aggiornamenti abilitati sulle vostre macchine, lo vedrete tra quelli da installare e, una volta installato, vedrete che la libreria Microsoft.SharePoint.dll verrà portata alla versione:  14.0.5050.5001
&lt;br /&gt;Sembra che sia stato rilasciato per la mancanza di un file.
&lt;br /&gt;
&lt;br /&gt;Ricordatevi di eseguire il tool "SharePoint Products and Technologies Configuration Wizard" una volta installato l'update.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/UpdateForSharePointFoundation2010KB2032588.aspx" /><issued>2010-7-15T20:0:59+01:00</issued><modified>2010-7-15T20:0:59+01:00</modified></entry><entry><title>Come recuperare le Missing Web Part indicate nel report di upgrade a SharePoint 2010</title><id>/Blog/HowToFindMissingWebPartIndicatedOverUpagradeToSharePoint2010Report.aspx</id><created>2010-7-14T17:43:17+01:00</created><content type="text/html" mode="escaped">Quando ci si prepara per un upgrade a SharePoint 2010 utilizzando la tecnica dell'attach del database di contentuo, è buona regola lanciare il comando *Test-SPContentDatabase* tramite PowerShell.
&lt;br /&gt;Questo comando controlla il database di contenuto che abbiamo intenzione di migrare e produce un report contenente tutti gli warning relativi al processo di migrazione, così che possiamo cercare il modo migliore di correggerli. Tra i vari messaggi, ci sono anche tutti quelli riguardanti le web part mancanti sulla farm SharePoint 2010 e che invece sono presenti all'interno del database che abbiamo intenzione di migrare. Il problema è che quel report non ci indica ne l'assembly ne il nome del tipo della nostra web part mancanta, ma ci presenta un GUID, il che rende impossibile capire di quale web part si sta parlando.
&lt;br /&gt;Esiste però il modo per recuperare a partire da quell'identificativo, qual'è l'assembly e quale la web part mancante.
&lt;br /&gt;Per questo ho creato un piccolo progetto su codeplex che dato l'assembly e il tipo di una web part (che possiamo tranquillamente recupare dalla pagina http://SERVERSHAREPOINT/_layouts/newdwp.aspx) genera l'identificativo della web part così come lo troviamo nel report di pre-migrazione.
&lt;br /&gt;La generazione di questo identificativo è fatta utilizzando lo stesso algoritmo che utilizza SharePoint per generare il GUID relativo alla web part e salvarlo nel database. Questo algorimo utilizzo un hashing MD5 per computare la stringa formata dalla concatenazione del nome dell'assembly, di un pipe e del nome del tipo relativi alla web part.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; data = &lt;span style="color: #A31515"&gt;"Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"&lt;/span&gt; + 
&lt;br /&gt;&lt;span style="color: #A31515"&gt;"|"&lt;/span&gt; +
&lt;br /&gt;&lt;span style="color: #A31515"&gt;"Microsoft.Office.Server.Search.WebControls.AdvancedSearchBox"&lt;/span&gt;;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[] dataBytes = Encoding.Unicode.GetBytes(data); 
&lt;br /&gt;MD5 hashAlgo = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; MD5CryptoServiceProvider(); 
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;byte&lt;/span&gt;[] hash = hashAlgo.ComputeHash(dataBytes); 
&lt;br /&gt;Guid hashGuid = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Guid(hash); 
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; WebPartID = hashGuid.ToString();&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://www.dev4side.com/media/5366/howtouse_798x170.jpg" alt="Easy WebPart Type ID generator" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Potete scaricare il tool da codeplex seguendo questo indirizzo:
&lt;br /&gt;&lt;a href="http://easywebparttypeidgen.codeplex.com/" title="Easy WebPart Type ID generator" target="_blank"&gt;http://easywebparttypeidgen.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToFindMissingWebPartIndicatedOverUpagradeToSharePoint2010Report.aspx" /><issued>2010-7-14T17:43:17+01:00</issued><modified>2010-7-14T17:43:17+01:00</modified></entry><entry><title>FatalError: The file cannot be imported because its parent web does not exist</title><id>/Blog/FatalErroTheFileCannotBeImportedBecauseItsParentWebDoesNotExists.aspx</id><created>2010-7-12T18:19:0+01:00</created><content type="text/html" mode="escaped">A fronte di un restore di una site collection, oppure di uno o più siti SharePoint 2007 tramite le utility di backup e restore presenti all'interno della Central Administration o tramite l'utility STSADM, o se utilizzate le &lt;a href="http://www.peppedotnet.it/Blog/SharePointAPIforContentDeploymentAndMigrations.aspx" title="Content Migration API" target="_blank"&gt;Content Migration API&lt;/a&gt; per effettuare spostamenti e operazioni varie, potete incappare in questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;FatalError: The file cannot be imported because its parent web [Parent Web URL] does not exist&lt;/div&gt;
&lt;br /&gt;In effetti, nel mio caso la dicitura dell'errore non faceva una piega.. il sito padre del sito che stavo cercando di spostare non esisteva. Questo perchè sto spostando il sito in un'altra gerarchia di siti, diversa da quella di partenza e, detto in tutta sincerità, mi sembra l'operazione più normale del mondo.
&lt;br /&gt;Li per li quindi, provo a creare un sito vuoto con lo stesso nome del sito padre in questione.. e lo spostamento di quel singolo sito va a buon fine. Nonostante ciò, mi ritrovo lo stesso errore su tutti gli altri siti, il che mi spaventa tantissimo.. perchè non potevo proprio pensare di dover ricreare la medesima struttura che avevo nella site collection di partenza per poter effettuare il mio restore.. sarebbe veramente da pazzi !
&lt;br /&gt;
&lt;br /&gt;Per fortuna, accedendo in desktop remoto al server con &lt;span style="text-decoration: underline"&gt;l'utenza con cui girano gli Application Pool di SharePoint&lt;/span&gt; e rieseguendo l'operazione di restore tutto è andato a buon fine, senza che io dovessi creare nessun sito vuoto o cose simili.
&lt;br /&gt;Senza far girare l'operazione di restore tramite l'utenza di servizio di SharePoint, andavo sempre incontro all'errore in questione, nonostante fossi admin della macchina, della farm e di sa il cavolo cosa ! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Backup.aspx" title="TAG: Backup"&gt;Backup&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Restore.aspx" title="TAG: Restore"&gt;Restore&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/FatalErroTheFileCannotBeImportedBecauseItsParentWebDoesNotExists.aspx" /><issued>2010-7-12T18:19:0+01:00</issued><modified>2010-7-12T18:19:0+01:00</modified></entry><entry><title>Developing Applications for SharePoint 2010</title><id>/Blog/DevelopingApplicationsForSharePoint 2010OnMicrosoftDownloadSite.aspx</id><created>2010-7-12T17:6:2+01:00</created><content type="text/html" mode="escaped">Come segnalato già da &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, Microsoft ha pubblicato un whitepaper molto interessante sulle novità di SharePoint 2010 per sviluppatori.
&lt;br /&gt;Trovate tutto il materiale per il download a questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=64b55569-2168-4545-8b7c-f185b2cf967d&amp;displaylang=en" title="Developing Applications for SharePoint 2010" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=64b55569-2168-4545-8b7c-f185b2cf967d&amp;displaylang=en&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che potete vedere alcune delle novità di SharePoint 2010 per sviluppatori dal vivo a Ground Zero, l'evento organizzato dai ragazzi di DotNetLombardia questo 22 luglio qui a Milano.
&lt;br /&gt;Per iscrivervi o per avere maggiori informazioni visitate il sito dell'evento:
&lt;br /&gt;&lt;a href="http://groundzero.dotnetlombardia.org/" title="DotNetLombardia - Evento: Ground Zero" target="_blank"&gt;http://groundzero.dotnetlombardia.org/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DevelopingApplicationsForSharePoint 2010OnMicrosoftDownloadSite.aspx" /><issued>2010-7-12T17:6:2+01:00</issued><modified>2010-7-12T17:6:2+01:00</modified></entry><entry><title>Disabilitare la sincronizzazione delle propriet&#224; sui documenti SharePoint</title><id>/Blog/HowToDisablePropertiesSynchronizationOnSharePointDocuments.aspx</id><created>2010-7-7T10:1:17+01:00</created><content type="text/html" mode="escaped">Chiunque utilizza SharePoint sa bene che durante la gestione di file all'interno di una document library, il sistema si preoccupa di mantenere sincronizzate le proprietà del file con i valori delle colonne della lista stessa e questo accade sia all'upload di un documento che alla modifica dei campi allegati.
&lt;br /&gt;Questo è il comportamento di default di ogni sito e, la maggior parte delle volte risulta proprio utile in quanto queste proprietà possono poi essere utilizzate per criteri di ricerca avanzata e, essendo proprie del file in se per se, vengono mantenute a fronte di copie varie.
&lt;br /&gt;Può capitare però di voler disabilitare tale comportamento, per i più svariati motivi.
&lt;br /&gt;Per farlo, non dobbiamo far altro che settare a "false" la proprietà &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.parserenabled.aspx" title="Proprietà ParserEnabled" target="_blank"&gt;"ParserEnabled"&lt;/a&gt; della classe SPWeb.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPWeb web = SPContext.Current.Web;
&lt;br /&gt;web.ParserEnabled = fase;
&lt;br /&gt;web.Update();&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Vi ricordo sempre che, per effettuare un commit della modifica di una proprietà del genere, va richiamato il metodo Update(), così come accade con l'utilizzo delle classi SPList, SPListItem, SPField, ecc..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDisablePropertiesSynchronizationOnSharePointDocuments.aspx" /><issued>2010-7-7T10:1:17+01:00</issued><modified>2010-7-7T10:1:17+01:00</modified></entry><entry><title>Le novit&#224; di SharePoint 2010 per sviluppatori a Ground Zero di DotNetLombardia</title><id>/Blog/WhatsNewInSharePoint2010ForDevelopersAtDotNetLombardia.aspx</id><created>2010-7-3T18:37:44+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepointCommunity.jpg" alt="SharePoint Community" style="float: right; margin: 10px;" /&gt;Spero che non sia tardi e che possiate organizzarvi per venire.
&lt;br /&gt;Il 22 di questo luglio, interverrò per &lt;a href="http://www.sharepointcommunity.it/news/Lists/Events/DispForm.aspx?ID=7" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt; all'evento &lt;a href="http://groundzero.dotnetlombardia.org" title="Evento Ground Zero di DotNetLombardia" target="_blank"&gt;Ground Zero&lt;/a&gt; organizzato dai ragazzi di &lt;a href="http://dotnetlombardia.org/" title="DotNetLombardia" target="_blank"&gt;DotNetLombardia&lt;/a&gt; qui a Milano, per parlare delle novità di SharePoint 2010 per sviluppatori.
&lt;br /&gt;Per questo ringrazio &lt;a href="http://dotnetlombardia.org/blogs/rob/default.aspx" title="Roberto Freato" target="_blank"&gt;Roberto Freato&lt;/a&gt; per il gentile invito.
&lt;br /&gt;
&lt;br /&gt;Sarà una sessione di circa un'ora, ricca di codice e demo, per cercare di snocciolare tutte quelle che sono le principali novità per noi sviluppatori introdotte nella versione 2010 di SharePoint.
&lt;br /&gt;Nel dettaglio, spero di fare in tempo a farvi vedere:
&lt;br /&gt;- integrazione con Visual Studio 2010
&lt;br /&gt;- LINQ to SharePoint
&lt;br /&gt;- Business Connectivity Services
&lt;br /&gt;- Client Object Model
&lt;br /&gt;- UI Framework (ribbon, dialog, notification)
&lt;br /&gt;
&lt;br /&gt;Nel resto della giornata, ci saranno poi sessioni su ASP.NET 4, WP7, Silverlight, MEF, WCF e Cloud computing.
&lt;br /&gt;Come potete vedere dall'agenda on-line:
&lt;br /&gt;&lt;a href="http://groundzero.dotnetlombardia.org/agenda" title="Agenda evento Ground Zero - DotNetLombardia" target="_blank"&gt;http://groundzero.dotnetlombardia.org/agenda&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Vi invito calorosamente ad iscrivervi.
&lt;br /&gt;&lt;a href="http://groundzero.dotnetlombardia.org/registrazione" title="Registrazione evento Ground Zero - DotNetLombardia" target="_blank"&gt;http://groundzero.dotnetlombardia.org/registrazione&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&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/SharePoint Community.aspx" title="TAG: SharePoint Community"&gt;SharePoint Community&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/WhatsNewInSharePoint2010ForDevelopersAtDotNetLombardia.aspx" /><issued>2010-7-3T18:37:44+01:00</issued><modified>2010-7-3T18:37:44+01:00</modified></entry><entry><title>Microsoft SharePoint MVP</title><id>/Blog/MicrosoftSharePointMVP.aspx</id><created>2010-7-1T17:59:4+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/mvp2.jpg" alt="Microsoft SharePoint MVP" style="float: right; margin: 10px" /&gt;Oggi è giornata particolare..
&lt;br /&gt;Sono appena stato nominato Microsoft MVP su SharePoint !!
&lt;br /&gt;
&lt;br /&gt;Non so bene ancora cosa ho in testa.. so che è stata una giornata eccitante ad aspettare quella mail di cui non sapevo praticamente nulla.. so che è un premio importante, e che come tutti i premi ha suo significato.. so che un pò lo speravo, lo ammetto, ma che non avrei mai pensato di arrivarci così "presto", diciamo.. o di arrivarci veramente.. so che con me, ci sono tante altre persone fantastiche (&lt;a href="http://blogs.devleap.com/devlizard/" title="Claudio Brotto" target="_blank"&gt;Claudio&lt;/a&gt;, &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, &lt;a href="http://blogs.dotnethell.it/gdelgiovine/" title="Gabriele Del Giovine" target="_blank"&gt;Gabriele&lt;/a&gt;, e &lt;a href="http://www.nonaka.eu/" title="Romeo Pruno" target="_blank"&gt;Romeo&lt;/a&gt;) e che è un onore star assieme a loro..
&lt;br /&gt;so che sono contento..
&lt;br /&gt;
&lt;br /&gt;In tutto ciò, ringrazio tanto mamma, babbo e benny.. tanto &lt;a href="http://www.dev4side.com" title="Miro Radenovic" target="_blank"&gt;Miro&lt;/a&gt;, tutti i ragazzi di casa e gli amici di sempre.. ringrazio quel "ciao" che con me faceva F5 sul blog di Alessandro.. ringrazio &lt;a href="http://blogs.technet.com/b/alead_msft/" title="Alessandro Teglia" target="_blank"&gt;Alessandro&lt;/a&gt; per la fiducia, tutti i ragazzi della &lt;a href="http://www.sharepointcommunity.it" title="SharePoint Community" target="_blank"&gt;SharePoint Community&lt;/a&gt;, i colleghi e tutti quelli che mi hanno accompagnato in quest'ultimo anno.
&lt;br /&gt;
&lt;br /&gt;Si, è proprio un bel giorno oggi ! :)
&lt;br /&gt;
&lt;br /&gt; 
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MVP.aspx" title="TAG: MVP"&gt;MVP&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MicrosoftSharePointMVP.aspx" /><issued>2010-7-1T17:59:4+01:00</issued><modified>2010-7-1T17:59:4+01:00</modified></entry><entry><title>Filtered Lookup Filed per SharePoint 2010</title><id>/Blog/FilteredLookupForSharePoint2010.aspx</id><created>2010-6-25T14:45:20+01:00</created><content type="text/html" mode="escaped">Tutti voi conoscerete sicuramente l'ottimo progetto &lt;a href="http://filteredlookup.codeplex.com/" title="SharePoint Filtered Lookup Field" target="_blank"&gt;"SharePoint Filtered Lookup Field"&lt;/a&gt; disponibile su codeplex per Windows SharePoint Services 3.0 e MOSS 2007.
&lt;br /&gt;Ecco, ultimamente mi servivano le stesse funzionalità però su un'installazione SharePoint 2010 ed ho effettuato il porting di tale progetto in modo da farlo funzionare anche nella nuova versione del prodotto di collaborazione Microsoft.
&lt;br /&gt;Ed ecco il risultato: un nuovo progetto codeplex per rendere disponibile a tutti questo porting !
&lt;br /&gt;&lt;a href="http://sp2010filteredlookup.codeplex.com/" title="SharePoint 2010 Filtered Lookup Field" target="_blank"&gt;http://sp2010filteredlookup.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Le caratteristiche del campo restano sempre le stesse:&lt;ul&gt;&lt;li&gt;possibilità di recuperare dati da liste presenti su siti diversi da quello corrente&lt;/li&gt;&lt;li&gt;possibilità di filtrare i dati da visualizzare attraverso una query CAML&lt;/li&gt;&lt;li&gt;Possibilità di filtrare i dati da visualizzare selezionando una vista&lt;/li&gt;&lt;li&gt;supporto per la scelta multipla di elementi&lt;/li&gt;&lt;/ul&gt;Il tutto in un campo del tutto simile al normale campo di tipo lookup di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Avete quindi la possibilità di aggiungere una colonna di questo tipo su qualsiasi lista o document library SharePoint 2010 tramite l'interfaccia grafica.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/filteredLookup.jpg" alt="SharePoint 2010 Filtered Lookup Field" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Di filtrare i dati recuperati in fase di lookup, tramite una query CAML.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/filteredLookup2.jpg" alt=SharePoint 2010 Filtered Lookup Field"" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Di filtrare i dati recuperati in fase di lookup, tramite l'utilizzo delle viste.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/filteredLookup3.jpg" alt="SharePoint 2010 Filtered Lookup Field" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Spero che possa essere utile a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Filtered lookup.aspx" title="TAG: Filtered lookup"&gt;Filtered lookup&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/FilteredLookupForSharePoint2010.aspx" /><issued>2010-6-25T14:45:20+01:00</issued><modified>2010-6-25T14:45:20+01:00</modified></entry><entry><title>Sono disponibili gli esami di certificazione per SharePoint 2010</title><id>/Blog/AvailableCertificationExamsOnSharePoint2010.aspx</id><created>2010-6-23T17:20:40+01:00</created><content type="text/html" mode="escaped">Sono stati pubblicati sul sito Microsft Learning, gli esami relativi a SharePoint 2010.
&lt;br /&gt;Questa volta, non c'è differenza tra la parte base (Foundation) e la completa (Server), come c'era per WSS/MOSS, ma abbiamo due esami per sviluppatori e due per professionisti IT.
&lt;br /&gt;Eccoli nel dettaglio:
&lt;br /&gt;
&lt;br /&gt;- Exam 70-573: TS: Microsoft SharePoint 2010, Application Development 
&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-573" title="Exam 70-573: TS: Microsoft SharePoint 2010, Application Development" target="_blank"&gt;http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-573&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;- Exam 70-576: PRO: Designing and Developing Microsoft SharePoint 2010 Applications
&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-576" title="Exam 70-576: PRO: Designing and Developing Microsoft SharePoint 2010 Applications" target="_blank"&gt;http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-576&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;- Exam 70-667: TS: Microsoft SharePoint 2010, Configuring 
&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-667" title="Exam 70-667: TS: Microsoft SharePoint 2010, Configuring" target="_blank"&gt;http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-667&lt;/a&gt; 
&lt;br /&gt;
&lt;br /&gt;- Exam 70-668: PRO: Microsoft SharePoint 2010, Administrator 
&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-668" title="Exam 70-668: PRO: Microsoft SharePoint 2010, Administrator" target="_blank"&gt;http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-668&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buon studio a tutti ! :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Certifications.aspx" title="TAG: Certifications"&gt;Certifications&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/AvailableCertificationExamsOnSharePoint2010.aspx" /><issued>2010-6-23T17:20:40+01:00</issued><modified>2010-6-23T17:20:40+01:00</modified></entry><entry><title>Come scrivere un event handler che effettua un redirect in SharePoint 2010</title><id>/Blog/ModificationToSPEventReceiverStatusClassInSharePoint2010ToRedirect.aspx</id><created>2010-6-22T9:40:15+01:00</created><content type="text/html" mode="escaped">Il modello ad oggetti di SharePoint 2010 vede una novità per quanto riguarda la classe SPEventReceiverStatus. Tale classe definisce lo stato di un event handler e permette di scegliere se la sua computazione deve continuare, se deve stopparsi lasciando all'utente un errore o se deve stopparsi "in silenzio" diciamo, quindi senza eseguire alcuna operazione sull'interfaccia grafica.
&lt;br /&gt;Oltre a questi comportamenti, nella nuova versione del prodotto di collaborazione Microsoft, è stato aggiunto quello di poter decidere di stoppare l'evento e redirezionare l'utente su una particolare pagina (diversa quindi dalla solita pagina "errors.aspx"), così da offrire una grafica personalizzata per il messaggio d'errore o per qualsiasi altro tipo di personalizzazione. 
&lt;br /&gt;Questo comportamento è definito dal valore CancelWithRedirectUrl e, come per gli altri, può essere utilizzato solamente all'interno di eventi di tipo sincroni (quindi tutti quelli che finiscono con "ing", per intenderci), che sono gli unici la cui computazione può essere stoppata.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/SPEventReceiverStatus.jpg" alt="Enum SPEventReceiverStatus" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Vediamo quindi, che all'interno di un gestore d'evento di tipo ItemDeleting, possiamo scegliere di stoppare la cancellazione dell'elemento (proprio come abbiamo sempre fatto in MOSS 2007) e redirezionare l'utente su una pagina d'errore personalizzata.
&lt;br /&gt;Per farlo, dobbiamo settare le proprietà Status e RedirectUrl della classe SPItemEventReceiver:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;namespace&lt;/span&gt; PeppeDotNet.SP2010.RedirectEventReceiver
&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; RedirectReceiver : SPItemEventReceiver
&lt;br /&gt;    {
&lt;br /&gt;       &lt;span style="color: #0000FF"&gt;public&lt;/span&gt; &lt;span style="color: #0000FF"&gt;override&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; ItemDeleting(SPItemEventProperties properties)
&lt;br /&gt;       {
&lt;br /&gt;           &lt;span style="color: #0000FF"&gt;base&lt;/span&gt;.ItemDeleting(properties);
&lt;br /&gt;           properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
&lt;br /&gt;           properties.RedirectUrl = &lt;span style="color: #A31515"&gt;"/_layouts/PeppeDotNet.SP2010/DeleteMessage.aspx"&lt;/span&gt;;
&lt;br /&gt;       }
&lt;br /&gt;    }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In questo esempio, con due righe di codice è stato possibile effettuare un redirect su una application page custom, posta sotto la directory "LAYOUTS". Su questa pagina è stato inserito il testo d'errore personalizzato e un pulsante per ritornare alla pagina chiamante (che utilizza il valore preso dalla querystring "Source", valore inserito in automatico dall'handler una volta che effettua il redirect).
&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;asp:Content&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ID&lt;span style='color:#0000FF'&gt;="Main"&lt;/span&gt; ContentPlaceHolderID&lt;span style='color:#0000FF'&gt;="PlaceHolderMain"&lt;/span&gt; runat&lt;span style='color:#0000FF'&gt;="server"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;You cannot delete this element ! why ?&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;br&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;Visit &lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;a&lt;/span&gt;&lt;span style='color:#FF0000'&gt; href&lt;span style='color:#0000FF'&gt;="http://www.peppedotnet.it"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;www.peppedotnet.it&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;a&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt; first.. :)
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;br&lt;/span&gt;&lt;span style='color:#FF0000'&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;/&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;br&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;a&lt;/span&gt;&lt;span style='color:#FF0000'&gt; href='&lt;%= Request.QueryString["Source"] %&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;'&gt;Go back&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;a&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;asp:Content&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;asp:Content&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ID&lt;span style='color:#0000FF'&gt;="PageTitle"&lt;/span&gt; ContentPlaceHolderID&lt;span style='color:#0000FF'&gt;="PlaceHolderPageTitle"&lt;/span&gt; runat&lt;span style='color:#0000FF'&gt;="server"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;ERROR
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;asp:Content&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;&lt;/span&gt;&lt;span style='color:#800000'&gt;asp:Content&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ID&lt;span style='color:#0000FF'&gt;="PageTitleInTitleArea"&lt;/span&gt; ContentPlaceHolderID&lt;span style='color:#0000FF'&gt;="PlaceHolderPageTitleInTitleArea"&lt;/span&gt; runat&lt;span style='color:#0000FF'&gt;="server"&lt;/span&gt; &lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;ERROR
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;asp:Content&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ed ecco il risultato:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/SPEventReceiverStatus1.jpg" alt="Cancellazione di un elemento" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/images/2010/SPEventReceiverStatus2.jpg" alt="Pagina d'errore custom" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, possiamo effettuare delle azioni custom a fronte di una delle operazioni che l'utente finale può fare sugli elementi di una lista SharePoint 2010 ed effettuare un redirect su un secondo contesto personalizzato.
&lt;br /&gt;In MOSS 2007 era possibile, con qualche trucco, effettuare un redirect all'interno di un event handler, ma così come l'han fatto è decisamente molto ma molto più pulito.
&lt;br /&gt;Forte no ? :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Server 2010.aspx" title="TAG: SharePoint Server 2010"&gt;SharePoint Server 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Event handler.aspx" title="TAG: Event handler"&gt;Event handler&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ModificationToSPEventReceiverStatusClassInSharePoint2010ToRedirect.aspx" /><issued>2010-6-22T9:40:15+01:00</issued><modified>2010-6-22T9:40:15+01:00</modified></entry><entry><title>Che fine ha fatto il link alla DispForm ?</title><id>/Blog/HowToCorrectNoDisplayFormLinkIntoSharePointList.aspx</id><created>2010-6-19T15:28:39+01:00</created><content type="text/html" mode="escaped">E' già la seconda volta che mi capita..
&lt;br /&gt;Praticamente a fronte di una modifica del contenuto della DispForm.aspx di una normale lista SharePoint (modifica effettuata sia tramite SharePoint Designer 2007 che tramite interfaccia) mi è capitato che il link renderizzato nel campo Title di una lista SharePoint per raggiungere il dettaglio di un singolo elemento sparisse dalla visualizzazione. O meglio, il valore del campo Title è sempre rimasto, ma il collegamento alla pagina DispForm portava invece al sito di root della nostra site collection:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://ROOTSITE/?ID=1&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In entrambi i casi, avevo tolto la web part di default (senza nasconderla) e l'avevo sostituita con altre web part.
&lt;br /&gt;
&lt;br /&gt;Per prima cosa ho controllato i valori presenti nel tab "Supporting Files" dalla finestra delle proprietà della mia lista aperta da SharePoint Designer. In effetti, era andato perso proprio il link alla pagina DispForm.aspx (sia per elementi che per folder) ed ho quindi provveduto a re-inserire a mano.
&lt;br /&gt;Fatto questo, provo un F5, ma niente.
&lt;br /&gt;
&lt;br /&gt;Così provo a resettare la mia DispForm.aspx alla versione originale data dalla propria list definition.
&lt;br /&gt;Un altro F5 e sempre niente.
&lt;br /&gt;
&lt;br /&gt;Ho provato anche a dare un'occhiata tramite il modello ad oggetti (utilizzando le classi SPForm e SPFormCollection) con il risultato che la lista in questione aveva solamente due form configurate (la edit e la new) e che non mi era possibile in alcun modo modificarne gli elementi (magari per aggiungere proprio il riferimento alla mia disp form).
&lt;br /&gt;
&lt;br /&gt;Nessun tentativo andava a buon fine, fin quando non ho reinserito all'interno della pagina una web part di tipo "ListFormWebPart" (copiandola da un altra lista) e lo configurata in modo tale da renderizzare il dettaglio degli elementi della lista in questione (inserendo i valori corretti per i campi ControlMode e Listname e cancellando i campi ID e ConnectionID, in modo tale da fargli rigenerare da SharePoint Designer).
&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;WebPartPages:ListFormWebPart&lt;/span&gt;&lt;span style='color:#FF0000'&gt; runat&lt;span style='color:#0000FF'&gt;="server"&lt;/span&gt; __MarkupType&lt;span style='color:#0000FF'&gt;="xmlmarkup"&lt;/span&gt; WebPart&lt;span style='color:#0000FF'&gt;="true"&lt;/span&gt;&lt;br /&gt;__WebPartId&lt;span style='color:#0000FF'&gt;="{2777F0BE-DF5A-4D9C-8FE5-6E10C9D605DA}"&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;WebPart&lt;/span&gt;&lt;span style='color:#FF0000'&gt;&lt;br /&gt;xmlns:xsi&lt;span style='color:#0000FF'&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;br /&gt;xmlns:xsd&lt;span style='color:#0000FF'&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2"&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;Title&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Outflow generating contracts&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Title&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;FrameType&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Default&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;FrameType&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;Description&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;IsIncluded&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;IsIncluded&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;PartOrder&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;1&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;PartOrder&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;FrameState&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Normal&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;FrameState&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;Height&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;Width&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;AllowRemove&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowRemove&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;AllowZoneChange&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowZoneChange&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;AllowMinimize&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowMinimize&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;AllowConnect&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowConnect&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;AllowEdit&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowEdit&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;AllowHide&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;AllowHide&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;IsVisible&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;IsVisible&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;DetailLink&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;HelpLink&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;HelpMode&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Modeless&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;HelpMode&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;Dir&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Default&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;Dir&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;PartImageSmall&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;MissingAssembly&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Cannot import this Web Part.&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;MissingAssembly&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;PartImageLarge&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;IsIncludedFilter&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;ExportControlledProperties&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;true&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;ExportControlledProperties&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;ListName&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;{B677C77F-C25B-4962-A632-DC67877DB8AB}&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;ListName&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;ListItemId&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;0&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;ListItemId&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;ControlMode&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;Display&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;ControlMode&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;TemplateName&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;ListForm&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;TemplateName&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;FormType&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;4&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;FormType&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;ViewFlag&lt;/span&gt;&lt;span style='color:#FF0000'&gt; xmlns&lt;span style='color:#0000FF'&gt;="http://schemas.microsoft.com/WebPart/v2/ListForm"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;1048576&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;ViewFlag&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;WebPart&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;WebPartPages:ListFormWebPart&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Una volta reinserita questa web part, magicamente in tutte le viste della mia lista è riapparso il link corretto alla pagina DispForm.aspx sulla colonna Title.
&lt;br /&gt;Quindi, quando modificate una form di una lista SharePoint e volete togliere la web part di tipo ListFormWebPart, io vi consiglio di nasconderla, così evitate errori del genere !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Designer.aspx" title="TAG: SharePoint Designer"&gt;SharePoint Designer&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToCorrectNoDisplayFormLinkIntoSharePointList.aspx" /><issued>2010-6-19T15:28:39+01:00</issued><modified>2010-6-19T15:28:39+01:00</modified></entry><entry><title>Come installare i VSeWSS su Windows XP o Vista</title><id>/Blog/HowToInstallVSeWSSOnWindowsXpOrWindowsVista.aspx</id><created>2010-6-12T17:4:49+01:00</created><content type="text/html" mode="escaped">Se provate a scaricare ed installare i tools di sviluppo per WSS 3.0 (VSeWSS) sulla vostra macchina Windows XP o Windows Vista, la procedura di installazione si fermerà subito con un errore. Questo perchè, e lo sapete bene, non è possibile installare WSS 3.0 su questi sistemi operativi e senza WSS i tools di sviluppo non possono essere utilizzati.
&lt;br /&gt;L'errore in questione ha la seguente dicitura:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;This product can only be installed if Windows SharePoint Services 3.0 has been installed first&lt;/div&gt;
&lt;br /&gt;che potete vedere anche in questa figura.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/InstallVSeWSS/ErrorTheProductCanBeOnlyInstalledWithWSS.jpg" alt="This product can only be installed if Windows SharePoint Services 3.0 has been installed first" /&gt;
&lt;br /&gt;
&lt;br /&gt;In questo caso però, c'è una via che ci permette comunque di utilizzare i VSeWSS sopra un sistema operativo in cui non è installato (o installabile) SharePoint. Vi devo avvisare però che questa, è TOTALMENTE NON SUPPORTATA da Microsoft.
&lt;br /&gt;Detto questo, si tratta semplicemente di aggiungere una nuova chiave di registro (chiamata "SharePoint") di tipo stringa e di valorizzarla con il valore "Installed". Così facendo, la procedura di installazione andrà a buon fine e potrete utilizzare i template offerti da tools di sviluppo di WSS 3.0 all'interno della vostra macchina Windows XP (o Vista).
&lt;br /&gt;La chiave, va aggiunta al seguente percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/InstallVSeWSS/00.jpg" alt="Creazione della chiave di registro" /&gt;
&lt;br /&gt;
&lt;br /&gt;Le uniche cose che dovrete fare a mano saranno comunque quella di aggiungere le referenze alle librerie del modello ad oggetti di SharePoint e di effettuare il deployment delle vostre personalizzazioni sulla macchina server in cui è installato Windows SharePoint Services 3.0 o MOSS 2007.
&lt;br /&gt;
&lt;br /&gt;Vi ricordo che questa procedura NON E' SUPPORTATA da Microsoft.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSeWSS.aspx" title="TAG: VSeWSS"&gt;VSeWSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInstallVSeWSSOnWindowsXpOrWindowsVista.aspx" /><issued>2010-6-12T17:4:49+01:00</issued><modified>2010-6-12T17:4:49+01:00</modified></entry><entry><title>Le API di SharePoint per il la migrazione e il deployment dei contenuti</title><id>/Blog/SharePointAPIforContentDeploymentAndMigrations.aspx</id><created>2010-6-9T16:47:39+01:00</created><content type="text/html" mode="escaped">Nella versione 3.0 di Windows SharePoint Services sono state introdotte delle particolari API utili al deployment e alla migrazione dei contenuti tra siti SharePoint (anche di farm differenti, in quanto il processo di esportazione e importazione dei contenuti si basa sulla creazione di file fisici sul file system).
&lt;br /&gt;Queste API vengono utilizzare da SharePoint stesso in tutti questi ambiti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;operazioni di export e import nell'utility STSADM&lt;/li&gt;&lt;li&gt;tool di migrazione da MCMS 2002&lt;/li&gt;&lt;li&gt;operazioni di muovi e copia nell'utility Site Manager&lt;/li&gt;&lt;li&gt;utilizzo delle "variations"&lt;/li&gt;&lt;/ul&gt;Inserendo la referenza alla libreria Microsoft.SharePoint.dll ed utilizzando le classi del namespace Microsoft.SharePoint.Deployment abbiamo la possibilità di utilizzare queste funzionalità all'interno delle nostre applicazione custom e di effettuare operazioni di deployment o migrazioni di dati personalizzate.
&lt;br /&gt;Le classi cui dobbiamo far riferimento sono le seguenti:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SPExport - controlla il processo di esportazione dei contenuti&lt;/li&gt;&lt;li&gt;SPExportSettings - utilizzata per configurare il processo di esportazione dei contenuti&lt;/li&gt;&lt;li&gt;SPImport - controlla il processo di importazione dei contenuti&lt;/li&gt;&lt;li&gt;SPImportSettings - utilizzata per configurare il processo di importazione dei contenuti&lt;/li&gt;&lt;/ul&gt;Come usare queste classi, per esempio, per spostare un sito SharePoint da una web applicatinon all'altra ? Ecco qua:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPSite sourceSite = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://SharePoint:81/"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (sourceSite)
&lt;br /&gt;{
&lt;br /&gt;    SPWeb sourceWeb = sourceSite.OpenWeb(&lt;span style="color: #A31515"&gt;"/SiteToMove/"&lt;/span&gt;);
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (sourceWeb)
&lt;br /&gt;    {
&lt;br /&gt;        SPExportObject exportObject = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPExportObject();
&lt;br /&gt;        exportObject.Id = sourceWeb.ID;
&lt;br /&gt;        exportObject.IncludeDescendants = SPIncludeDescendants.All;
&lt;br /&gt;        exportObject.Type = SPDeploymentObjectType.Web;
&lt;br /&gt;
&lt;br /&gt;        SPExportSettings exportSettings = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPExportSettings();
&lt;br /&gt;        exportSettings.SiteUrl = &lt;span style="color: #A31515"&gt;"http://SharePoint:81/"&lt;/span&gt;;
&lt;br /&gt;        exportSettings.ExportMethod = SPExportMethodType.ExportAll;
&lt;br /&gt;        exportSettings.FileLocation = @&lt;span style="color: #A31515"&gt;"C:\export"&lt;/span&gt;;
&lt;br /&gt;        exportSettings.FileCompression = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;
&lt;br /&gt;        exportSettings.ExcludeDependencies = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;
&lt;br /&gt;        exportSettings.IncludeSecurity = SPIncludeSecurity.All;
&lt;br /&gt;        exportSettings.ExportObjects.Add(exportObject);
&lt;br /&gt;
&lt;br /&gt;        SPExport export = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPExport(exportSettings);
&lt;br /&gt;        export.Run();
&lt;br /&gt;    }
&lt;br /&gt;}
&lt;br /&gt;Console.WriteLine(&lt;span style="color: #A31515"&gt;"Export completato"&lt;/span&gt;);
&lt;br /&gt;
&lt;br /&gt;SPSite destinationSite = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://SharePoint:82/"&lt;/span&gt;);
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (destinationSite)
&lt;br /&gt;{
&lt;br /&gt;    SPWebApplication webApp = destinationSite.WebApplication;
&lt;br /&gt;
&lt;br /&gt;    webApp.FormDigestSettings.Enabled = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;
&lt;br /&gt;
&lt;br /&gt;    SPImportSettings importSettings = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPImportSettings();
&lt;br /&gt;    importSettings.SiteUrl = &lt;span style="color: #A31515"&gt;"http://SharePoint:82/"&lt;/span&gt;;
&lt;br /&gt;    importSettings.WebUrl = &lt;span style="color: #A31515"&gt;"http://SharePoint:82/"&lt;/span&gt;;
&lt;br /&gt;    importSettings.LogFilePath = Path.Combine(Environment.CurrentDirectory, &lt;span style="color: #A31515"&gt;"log.txt"&lt;/span&gt;);
&lt;br /&gt;    importSettings.FileLocation = @&lt;span style="color: #A31515"&gt;"C:\export"&lt;/span&gt;;
&lt;br /&gt;    importSettings.FileCompression = &lt;span style="color: #0000FF"&gt;false&lt;/span&gt;;
&lt;br /&gt;    importSettings.RetainObjectIdentity = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;    importSettings.CommandLineVerbose = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;    importSettings.IncludeSecurity = SPIncludeSecurity.All;
&lt;br /&gt;    importSettings.UserInfoDateTime = SPImportUserInfoDateTimeOption.ImportAll;
&lt;br /&gt;
&lt;br /&gt;    SPImport import = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPImport(importSettings);
&lt;br /&gt;    import.Run();
&lt;br /&gt;
&lt;br /&gt;    webApp.FormDigestSettings.Enabled = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;
&lt;br /&gt;}
&lt;br /&gt;Console.WriteLine(&lt;span style="color: #A31515"&gt;"Import completato"&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Da questo esempio, possiamo vedere che abbiamo la possibilità di decidere se esportare e importare i permessi utente o se tralasciarli (valorizzando la proprietà IncludeSecurity), possiamo decidere se comprimere o meno i file di esportazione (valorizzando la proprietà FileCompression) e di mantenere o meno gli identificativi di partenza per ogni oggetto che stiamo per migrare (valorizzando la proprietà RetainObjectIdentity).
&lt;br /&gt;Infine, abilitando la visualizzazione dei log in modalità verbosa, possiamo vedere tutto ciò che non è stato importato, eventuali warning e tutti i contenuti che invece sono stati correttamente importati.
&lt;br /&gt;
&lt;br /&gt;E' sempre tramite queste API che sono stati sviluppati la maggiorparte dei prodotti di amministrazione di SharePoint tutt'ora in commercio.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointAPIforContentDeploymentAndMigrations.aspx" /><issued>2010-6-9T16:47:39+01:00</issued><modified>2010-6-9T16:47:39+01:00</modified></entry><entry><title>Come abilitare la Quick Launch Bar in Web Part Page e Basic Page</title><id>/Blog/HowToEnableQuickLaunchBarInWebPartPagesAndBasicPages.aspx</id><created>2010-6-8T20:44:41+01:00</created><content type="text/html" mode="escaped">In WSS 3.0 (o MOSS 2007) quando si crea una pagina di tipo Web Part Page o Basic Page non viene visualizzato il menu laterale solito di ogni sito SharePoint. Il menu in questione è la cosiddetta Quick Launch Bar.
&lt;br /&gt;Beh, molto spesso può servire invece di visualizzare comunque tale menu in pagine di questo tipo, per permettere all'utente di ritrovarsi la medesima struttura di navigazione contestuale al sito che sta visualizzando.
&lt;br /&gt;Per farlo, basta modificare la pagina con SharePoint Designer ed eliminare questo elemento di tipo Content:
&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;asp:Content&lt;/span&gt;&lt;span style='color:#FF0000'&gt; ContentPlaceHolderId&lt;span style='color:#0000FF'&gt;="PlaceHolderLeftNavBar"&lt;/span&gt; runat&lt;span style='color:#0000FF'&gt;="server"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;asp:Content&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;In pratica, la presenza di questo elemento sovrascrive quanto presente nella master page di default di SharePoint e quindi niente più Quick Launch Bar.
&lt;br /&gt;Togliendolo dalla nostra Web Part Page (o da una Basic Page) verrà renderizzato invece il contenuto definito a livello di master page.
&lt;br /&gt;
&lt;br /&gt;Se vogliamo applicare questa modifica definitivamente per tutte le Web Part Page o Basic Page della nostra farm SharePoint, dobbiamo modificare i file con estensione .ASPX, presenti ai seguenti percorsi:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;- Web Part Pages:&lt;/span&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\&lt;LCID&gt;\STS\DOCTEMP\SMARTPGS&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;- Basic Pages:&lt;/span&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\&lt;LCID&gt;\STS\DOCTEMP\BLANKPGS&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToEnableQuickLaunchBarInWebPartPagesAndBasicPages.aspx" /><issued>2010-6-8T20:44:41+01:00</issued><modified>2010-6-8T20:44:41+01:00</modified></entry><entry><title>Screencast: list item custom action con SharePoint Designer 2010</title><id>/Blog/ScreencastListItemCustomActionWithSharePointDesigner2010.aspx</id><created>2010-6-2T17:51:54+01:00</created><content type="text/html" mode="escaped">Una delle nuove funzionalità di SharePoint Designer 2010 è quella di permettere la creazione di custom action (o ribbon) direttamente su un'istanza di lista ed associare a tale azione un indirizzo personalizzato.
&lt;br /&gt;Nella versione 2007 di SharePoint, per la creazione di un'azione personalizzata dovevamo creare una feature apposita e specificare lo scope per la nostra azione, se applicabile a tutte le liste, se a singole tipologie (tramite l'identificativo di una list definition) o se a singoli content type.
&lt;br /&gt;In SharePoint 2010 invece, possiamo legare azioni custom su singole liste già create all'interno dei nostri siti SharePoint, senza dover passare per la creazione della relativa feature.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Media/SPD2010_CustomAction.png" alt="Screencast: list item custom action con SharePoint Designer 2010" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per spiegare velocemente questa nuova funzionalità, ho registrato uno screencast che potete trovare &lt;a href="http://www.peppedotnet.it/Media/List%20item%20custom%20action%20con%20SharePoint%20Designer%202010.aspx" title="Screencast: list item custom action con SharePoint Designer 2010"&gt;all'interno della sezione "Media"&lt;/a&gt; di questo sito.
&lt;br /&gt;Buona visione.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Designer.aspx" title="TAG: SharePoint Designer"&gt;SharePoint Designer&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ScreencastListItemCustomActionWithSharePointDesigner2010.aspx" /><issued>2010-6-2T17:51:54+01:00</issued><modified>2010-6-2T17:51:54+01:00</modified></entry><entry><title>Sono su Planet-SharePoint</title><id>/Blog/NowImOnPlanetSharePoint.aspx</id><created>2010-6-2T14:53:21+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://www.planetsharepoint.org/" title="Planet-SharePoint" target="_blank"&gt;Planet-SharePoint&lt;/a&gt; è un portale che mette assieme parecchi blog su SharePoint scritti da tutto il mondo. E' veramente una bella pensata, perchè all'interno di un solo sito possiamo trovare tantissime informazioni tecniche o meno su SharePoint, senza doversele cercare su qualche motore di ricerca.
&lt;br /&gt;Ecco.. da circa una settimana ormai ci sono finito dentro anche io :)
&lt;br /&gt;
&lt;br /&gt;Questo il link:
&lt;br /&gt;&lt;a href="http://www.planetsharepoint.org/profiles/giuseppe-marchi" title="PeppeDotNet on PlanetSharePoint" target="_blank"&gt;http://www.planetsharepoint.org/profiles/giuseppe-marchi&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per chi già segue questo sito non c'è nulla di nuovo mi spiace.. ma per tutti quelli che cercano informazioni su SharePoint e dintorni, diciamo che ora do anch'io il mio piccolo contributo.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/NowImOnPlanetSharePoint.aspx" /><issued>2010-6-2T14:53:21+01:00</issued><modified>2010-6-2T14:53:21+01:00</modified></entry><entry><title>Come recuperare la versione di SharePoint tramite codice</title><id>/Blog/HowToGetSharePointVersionProgrammatically.aspx</id><created>2010-6-1T14:18:45+01:00</created><content type="text/html" mode="escaped">Sicuramente non è un task che vi potete trovare di fronte nel lavoro di tutti i giorni, ma magari a qualcuno può essere utile.
&lt;br /&gt;La versione della propria intstallazione SharePoint, tramite interfaccia grafica, è visibile seguendo questo percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;Central Administration &gt; Operations &gt; Servers &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; Farm&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Può capitare però, di dover controllare il numero di versione di SharePoint all'interno di una propria personalizzazione, magari per abilitare o meno delle feature in base all'installazione di qualche service pack o di qualche particolare hotfix.
&lt;br /&gt;Per farlo, possiamo utilizzare le classi del namespace System.Data.SqlClient ed eseguire la seguente query:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SELECT Version, UserName
&lt;br /&gt;FROM Versions
&lt;br /&gt;WHERE VersionId = '00000000-0000-0000-0000-000000000000'
&lt;br /&gt;ORDER BY Id DESC&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;sul database di contenuto della Central Administration.
&lt;br /&gt;
&lt;br /&gt;Altrimenti, possiamo utilizzare il modello ad oggetti in questo modo:
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;System.Version v = SPFarm.Local.BuildVersion;
&lt;br /&gt;System.Version WssSP1v = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; Version(&lt;span style="color: #A31515"&gt;"12.0.0.6219"&lt;/span&gt;);
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (v &gt;= WssSP1v)
&lt;br /&gt;    &lt;span style="color: #008200"&gt;//SP2 installed&lt;/span&gt;
&lt;span style="color: #0000FF"&gt;else&lt;/span&gt;
&lt;br /&gt;    &lt;span style="color: #008200"&gt;//SP2 NOT installed&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Così possiamo essere ancora più sicuri quando redistribuiamo le nostre customizzazioni su ambiente SharePoint.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToGetSharePointVersionProgrammatically.aspx" /><issued>2010-6-1T14:18:45+01:00</issued><modified>2010-6-1T14:18:45+01:00</modified></entry><entry><title>Cosa fare se SharePoint ti permette di caricare solo file NON superiori a circa 30 MB</title><id>/Blog/HowToIncreaseMaxFileSizeOver28MbUploadOnSharePoint.aspx</id><created>2010-5-30T9:34:34+01:00</created><content type="text/html" mode="escaped">Se utilizzate Windows SharePoint Services 3.0 o MOSS 2007 su delle macchine Windows Server 2008 (con IIS 7 ovviamente), potreste incappare nell'impossibilità di caricare all'interno delle vostre document library, file più grossi di circa 30 MB.
&lt;br /&gt;Eppure il limite massimo di upload settato di default è di 50 mb direte voi.. e avete anche ragione !
&lt;br /&gt;Si tratta però di un errore di configurazione noto, completo di articolo nella KB.
&lt;br /&gt;I sintomi per riscontrare questo comportamento sono i seguenti:
&lt;br /&gt;
&lt;br /&gt;- quando cercate di caricare un singolo file all'interno di una document library tramite interfaccia, verrete ridirezionati sulla pagina di errore 404.
&lt;br /&gt;- quando cercate di caricare più file, tramite la pagina di caricamento multiplo, inizialmente l'operazione sembrerà andare a buon fine, ma poi vi accorgerete che non verrà caricato nessun file.
&lt;br /&gt;- quando cercate di inserire un singolo file tramite l'explorer view di una document library, il sistema operativo vi da un'errore di scrittura.
&lt;br /&gt;
&lt;br /&gt;Per ovviare a questo problema, non c'è modo se non quello descritto da questo articolo della KB Microsoft:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/944981/en-us" target="_blank" title="You cannot upload files that are larger than 28 MB on a Windows Server 2008-based computer that is running Windows SharePoint Services 3.0"&gt;http://support.microsoft.com/kb/944981/en-us&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Praticamente, si tratta di modificare il file web.config della propria web application ed aggiungere in fondo la sezione:
&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;system.webServer&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;security&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;requestFiltering&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;requestLimits&lt;/span&gt;&lt;span style='color:#FF0000'&gt; maxAllowedContentLength&lt;span style='color:#0000FF'&gt;="52428800"&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;requestFiltering&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;security&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;system.webServer&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete invece, alzare la soglia massimo di upload della vostra web application SharePoint, oltre a modificarne i settaggi all'interno della Central Administration, dovete seguire i passi descritti qui:
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/joelo/archive/2007/06/27/file-name-length-size-and-invalid-character-restrictions-and-recommendations.aspx" title="File Name, Length, Size and Invalid Character Restrictions and Recommendations" target="_blank"&gt;http://blogs.msdn.com/b/joelo/archive/2007/06/27/file-name-length-size-and-invalid-character-restrictions-and-recommendations.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToIncreaseMaxFileSizeOver28MbUploadOnSharePoint.aspx" /><issued>2010-5-30T9:34:34+01:00</issued><modified>2010-5-30T9:34:34+01:00</modified></entry><entry><title>Errore: &quot;There has been an error while loading the form&quot;</title><id>/Blog/SharePointErrorThereHasBeenAnErrorWhileLoadingTheForm.aspx</id><created>2010-5-26T17:50:21+01:00</created><content type="text/html" mode="escaped">Oggi, un paio di utenti hanno iniziato a segnalarmi un errore sull'Approval Workflow di MOSS 2007.
&lt;br /&gt;L'errore veniva fuori ad intermittenza sulle form di approvazione di un workflow di tipo "Approval Workflow" su una farm MOSS 2007 aggiornata al Service Pack 2.
&lt;br /&gt;In particolare, veniva visualizzato il seguente messaggio:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; margin-left: 10px; font-style: italic"&gt;There has been an error while loading the form. A required resource could not be downloaded. To try to resume the download, refresh the page.&lt;/div&gt;
&lt;br /&gt;All'interno del log di SharePoint (se abilitata la modalità verbosa) è possibile vedere utleriori dettagli sull'errore, che però non ci dicono tanto.
&lt;br /&gt;
&lt;br /&gt;Come risolvere ? Eliminando i file temporanei di Internet Explorer ! :)
&lt;br /&gt;Infatti su Firefox non si era mai verificato.
&lt;br /&gt;
&lt;br /&gt;Magari a qualcuno torna utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Approval Workflow.aspx" title="TAG: Approval Workflow"&gt;Approval Workflow&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Form server.aspx" title="TAG: Form server"&gt;Form server&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointErrorThereHasBeenAnErrorWhileLoadingTheForm.aspx" /><issued>2010-5-26T17:50:21+01:00</issued><modified>2010-5-26T17:50:21+01:00</modified></entry><entry><title>Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)</title><id>/Blog/SharePointErrorGuidShouldContain32DigitsWith4Dashes.aspx</id><created>2010-5-15T12:2:43+01:00</created><content type="text/html" mode="escaped">In settimana sono incappato in questo errore cercando di modificare una pagina SharePoint 2007.
&lt;br /&gt;Praticamente, dopo aver copiato del contenuto all'interno dell'editor RTF di una Content Editor Web Part preso da una web part dello stesso tipo posta in una seconda pagina e dopo aver salvato la pagina, cercando di rimodificarla molti dei menu delle web part presenti nella pagina non venivano nemmeno aperti (venivano scatenati degli errori javascript che non sto a riportarvi, perchè del tutto forvianti) e, in quelle poche web part che permettevano la modifica delle proprietà, quando si cercava di salvare le modifiche fatte la pagina andava in errore.
&lt;br /&gt;Stesso errore veniva scatenato anche se cercavo di spostare una web part da una zona all'altra.
&lt;br /&gt;Più preceisamente, l'errore era il seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). 
&lt;br /&gt;
&lt;br /&gt;Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
&lt;br /&gt;
&lt;br /&gt;Exception Details: System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
&lt;br /&gt;
&lt;br /&gt;Source Error: 
&lt;br /&gt;
&lt;br /&gt;An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  
&lt;br /&gt;
&lt;br /&gt;Stack Trace: 
&lt;br /&gt;
&lt;br /&gt;[FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).]
&lt;br /&gt;   System.Guid..ctor(String g) +2957
&lt;br /&gt;   Microsoft.SharePoint.WebPartPages.SPWebPartManager.ApplyChangeList(String changeString) +1237
&lt;br /&gt;   Microsoft.SharePoint.WebPartPages.SPWebPartManager.OnLoad(EventArgs e) +712
&lt;br /&gt;   System.Web.UI.Control.LoadRecursive() +101
&lt;br /&gt;   System.Web.UI.Control.LoadRecursive() +211
&lt;br /&gt;   System.Web.UI.Control.LoadRecursive() +211
&lt;br /&gt;   System.Web.UI.Control.LoadRecursive() +211
&lt;br /&gt;   System.Web.UI.Control.LoadRecursive() +211
&lt;br /&gt;   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2588&lt;/div&gt;
&lt;br /&gt;Per ritornare alla situazione normale mi sono accorto che dovevo togliere la web part di tipo Content Editor, nella quale avevo copiato il contenuto ormai "sospetto", aggiungendo alla url la querystring "?contents=1".
&lt;br /&gt;Dico sospetto perchè mi sono accorto che durante la copia di tale contenuto, oltre a tutti i tag html utili per formattare testi e immagini, veniva riportato anche questo frammento di markup:
&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;DIV&lt;/span&gt;&lt;span style='color:#FF0000'&gt; id=WebPartWPQ5 class=ms-WPBody WebPartID&lt;span style='color:#0000FF'&gt;="52c5078f-88d5-4283-8095-e11b04fa7ce2"&lt;/span&gt; 
&lt;br /&gt;HasPers&lt;span style='color:#0000FF'&gt;="false"&lt;/span&gt; width&lt;span style='color:#0000FF'&gt;="100%"&lt;/span&gt; allowDelete&lt;span style='color:#0000FF'&gt;="false"&lt;/span&gt;&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;
&lt;br /&gt;..
&lt;br /&gt;&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;DIV&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ed è proprio questo div HTML che causava tutto il casino che vi ho descritto.
&lt;br /&gt;Togliendolo è ritornato tutto alla normalità. Quindi, quando copiate del contenuto all'interno dell'editor RTF di una Content Editor Web Part, state attenti al markup che vi portate dietro !!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content Editor Web Part.aspx" title="TAG: Content Editor Web Part"&gt;Content Editor Web Part&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointErrorGuidShouldContain32DigitsWith4Dashes.aspx" /><issued>2010-5-15T12:2:43+01:00</issued><modified>2010-5-15T12:2:43+01:00</modified></entry><entry><title>Disponibili i language pack per SharePoint Server 2010 e SharePoint Foundation 2010</title><id>/Blog/SharePoint2010LanguagePackAvailable.aspx</id><created>2010-5-11T10:18:12+01:00</created><content type="text/html" mode="escaped">Sono finalmente disponibili i language pack per le versioni di SharePoint 2010.
&lt;br /&gt;Ecco i dettagli per il download:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;2010 Server Language Packs for SharePoint Server 2010, Project Server 2010, Search Server 2010, and Office Web Apps 2010&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=046f16a9-4bce-4149-8679-223755560d54" title="2010 Server Language Packs for SharePoint Server 2010, Project Server 2010, Search Server 2010, and Office Web Apps 2010" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=046f16a9-4bce-4149-8679-223755560d54&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Language Packs for SharePoint Foundation 2010&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=646e311a-aaf3-4d30-b03c-2f3c70d19a22" title="Language Packs for SharePoint Foundation 2010" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=646e311a-aaf3-4d30-b03c-2f3c70d19a22&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per l'installazione, non c'è nulla di nuovo ne dalla versione 2007 ne dalla beta di 2010. Per chi si accinge per la prima volta ad installarli, consiglio di leggere la documentazione:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Deploy language packs (SharePoint Server 2010)&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc262108(office.14).aspx" title="Deploy language packs (SharePoint Server 2010)" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc262108(office.14).aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;Deploy language packs (SharePoint Foundation 2010)&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc288518(office.14).aspx" title="Deploy language packs (SharePoint Foundation 2010)&lt;/" target="_blank"&gt;http://technet.microsoft.com/en-us/library/cc288518(office.14).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/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Language Pack.aspx" title="TAG: Language Pack"&gt;Language Pack&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010LanguagePackAvailable.aspx" /><issued>2010-5-11T10:18:12+01:00</issued><modified>2010-5-11T10:18:12+01:00</modified></entry><entry><title>SharePoint 2010 Extensibility Projects</title><id>/Blog/SharePoint2010ExtensibilityProjects.aspx</id><created>2010-5-9T11:33:46+01:00</created><content type="text/html" mode="escaped">Microsoft ha rilasciato da poco, all'interno della &lt;a href="http://code.msdn.microsoft.com/" title="MSDN Code Gallery" target="_blank"&gt;MSDN Code Gallery&lt;/a&gt;, tre nuovi template di Visual Studio 2010 per lo sviluppo di personalizzazioni sulla nuova versione di SharePoint.
&lt;br /&gt;Utilizzando le nuove caratteristiche di estensione di Visual Studio, sono stati creati progetti per:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;creare una web part che funga da host per un'applicazione Silverlight (Silverlight Web Part Project Template)&lt;/li&gt;&lt;li&gt;creare ribbon o gruppi di ribbon da inserire nei propri siti SharePoint (Server Ribbon Project Item Template)&lt;/li&gt;&lt;li&gt;creare add-in a livello di documento (OBA Deployment Project Item Template)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Il link per il download è il seguente:
&lt;br /&gt;&lt;a href="http://code.msdn.microsoft.com/vsixforsp" title="SharePoint 2010 Extensibility Projects" target="_blank"&gt;http://code.msdn.microsoft.com/vsixforsp&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Mentre in questi post, potete vedere i vari esempi di utilizzo dei tre template.
&lt;br /&gt;- &lt;a href="" target="_blank" title="Silverlight Web Part Project Template"&gt;Esempio: Silverlight Web Part Project Template&lt;/a&gt;
&lt;br /&gt;- &lt;a href="" target="_blank" title="Server Ribbon Project Item Template"&gt;Esempio: Server Ribbon Project Item Template&lt;/a&gt;
&lt;br /&gt;- &lt;a href="" target="_blank" title="OBA Deployment Project Item Template"&gt;Esempio: OBA Deployment Project Item Template&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Attualmente i template sono in versione beta.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&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/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ExtensibilityProjects.aspx" /><issued>2010-5-9T11:33:46+01:00</issued><modified>2010-5-9T11:33:46+01:00</modified></entry><entry><title>Come inserire dei link all'interno della lista &quot;My Links&quot; di SharePoint 2007</title><id>/Blog/HowToInsertLinksIntoSharePointMyLinksList.aspx</id><created>2010-5-4T16:30:22+01:00</created><content type="text/html" mode="escaped">La lista dei "my link" è abilitata a livello di Shared Service Provider, anche se non sono attiviti i siti personali all'interno della farm SharePoint, e ci permette di salvare link personali per una scelta rapida. Ma questo ormai lo sappiamo tutti, visto che è un concetto presente già da SharePoint 2003/WSS 2.
&lt;br /&gt;Attraverso l'utilizzo del modello ad oggetti e, in particolare, dei namespace Microsoft.Office.Server.UserProfiles e Microsoft.Office.Server abbiamo la gestione completa di tali link all'interno delle nostre personalizzazioni SharePoint.
&lt;br /&gt;Ecco, quindi, che possiamo creare applicazioni che inseriscono dei link all'interno della lista "my link" per l'utente corrente e all'interno della farm corrente, utilizzando il seguente codice:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #008200"&gt;//farm corrente&lt;/span&gt;
UserProfileManager userProfileManager = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; UserProfileManager(ServerContext.Current);
&lt;br /&gt;&lt;span style="color: #008200"&gt;//utente corrente&lt;/span&gt;
UserProfile currentUser = userProfileManager.GetUserProfile(&lt;span style="color: #0000FF"&gt;true&lt;/span&gt;);
&lt;br /&gt;QuickLinkManager quickLinkManager = currentUser.QuickLinks;
&lt;br /&gt;quickLinkManager.Create(&lt;span style="color: #A31515"&gt;"PeppeDotNet.it"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"http://www.peppedotnet.it"&lt;/span&gt;, QuickLinkGroupType.General, &lt;span style="color: #A31515"&gt;""&lt;/span&gt;, Privacy.Private);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;o che, per esempio, li modifichino o li cancellino:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt;(QuickLink link &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; quickLinkManager.GetItems(Privacy.Private))
&lt;br /&gt;{
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (link.Title == &lt;span style="color: #A31515"&gt;"PeppeDotNet.it"&lt;/span&gt;)
&lt;br /&gt;          link.Title = &lt;span style="color: #A31515"&gt;"Peppe the best"&lt;/span&gt;;
&lt;br /&gt;     &lt;span style="color: #0000FF"&gt;else&lt;/span&gt;
&lt;br /&gt;          link.Delete();
&lt;br /&gt;}
&lt;br /&gt;quickLinkManager.DeleteAll();&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;L'utilizzo di queste classi, come vedete, è veramente semplice. Le uniche cose a cui porre attenzione sono le seguenti.
&lt;br /&gt;
&lt;br /&gt;1- Se vogliamo specificare una site collection, posta sotto il controllo di uno Shared Service Provider diverso da quello del contesto corrente, dobbiamo specificarla istanziando la classe SPSite e passarla come parametro alla classe ServerContext.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;SPSite site = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SPSite(&lt;span style="color: #A31515"&gt;"http://moss/"&lt;/span&gt;);
&lt;br /&gt;ServerContext context = ServerContext.GetContext(site);                        
&lt;br /&gt;UserProfileManager userProfileManager = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; UserProfileManager(context);
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//..&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;2- Se vogliamo inserire, cancellare o modificare i link di un altro utente (diverso da quello corrente), dobbiamo utilzzare un'altra signature del metodo GetUserProfile, passando il login name dell'utente in questione come parametro principale.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #008200"&gt;//..&lt;/span&gt;

&lt;br /&gt;UserProfile user = userProfileManager.GetUserProfile(&lt;span style="color: #A31515"&gt;"PEPPEDOTNET\\peppe"&lt;/span&gt;);
&lt;br /&gt;QuickLinkManager quickLinkManager = user.QuickLinks;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="color: #008200"&gt;//..&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;3- Se vogliamo inserire un nuovo link e spostarlo sotto una categoria personalizzata, dobbiamo usare il valore UserSpecified dell'enumerazione QuickLinkGroupType specificando anche il nome del gruppo, come quarto parametro del metodo Create. E' importante ricordarsi che questo parametro viene preso in considerazione solo le l'enumerazione di tipo QuickLinkGroupType ha valore UserSpecified, altrimenti viene proprio ignorato.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #008200"&gt;//..&lt;/span&gt;

&lt;br /&gt;QuickLinkManager quickLinkManager = currentUser.QuickLinks;
&lt;br /&gt;quickLinkManager.Create(&lt;span style="color: #A31515"&gt;"PeppeDotNet.it"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"http://www.peppedotnet.it"&lt;/span&gt;,
&lt;br /&gt;QuickLinkGroupType.UserSpecified, &lt;span style="color: #A31515"&gt;"Best SharePoint Sites"&lt;/span&gt;, Privacy.Public);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;4- &lt;span style="text-decoration: underline;"&gt;Se vogliamo modificare i link di un utente diverso dall'utenza corrente, dobbiamo eseguire il codice con privilegi di amministratore !&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/My links.aspx" title="TAG: My links"&gt;My links&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInsertLinksIntoSharePointMyLinksList.aspx" /><issued>2010-5-4T16:30:22+01:00</issued><modified>2010-5-4T16:30:22+01:00</modified></entry><entry><title>Come installare una farm SharePoint 2010 utilizzando un account locale</title><id>/Blog/HowToInstallaSharePoint2010FarmWithALocalAccount.aspx</id><created>2010-5-2T18:56:37+01:00</created><content type="text/html" mode="escaped">Di tanto in tanto, può capitare di dover installare SharePoint 2010 in una macchina fuori dominio e di aver bisogno di gestirne i database attraverso un'installazione di SQL Server Standard o Enterprise. Questo, è il caso in cui un'installazione di tipo standalone ci sta stretta, perchè si basa sulla versione Express di SQL.
&lt;br /&gt;Provando quindi ad installare SharePoint in modalità avanzata e iniziando la configurazione di una nuova farm, l'utility "SharePoint Products Configuration Wizard" ci ferma immediatamente dicendo che l'utenza con cui abbiamo deciso di far girare tutti i servizi di SharePoint e che si occuperà di accedere ai vari database è un account locale e che non è possibile creare una nuova farm utilizzando un account NON di dominio.
&lt;br /&gt;L'errore in questione è il seguente:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The specified user [USER NAME] is a local account. Local accounts should only be used in stand alone mode&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/InstallLocalAccount/01.jpg" alt="The specified user [USER NAME] is a local account. Local accounts should only be used in stand alone mode" /&gt;
&lt;br /&gt;
&lt;br /&gt;Se ci pensiamo bene, SharePoint ha pienamente ragione, perchè una configurazione avanzata permette la creazione di una farm alla quale possiamo poi collegare altri server, magari per l'indicizzazione, l'invio delle mail o altro.. ed ovviamente, un account locale alla macchina in cui stiamo installando il prodotto non è in grado di "passare" tra una macchina e l'altra data la sua natura "local" (non è appartenente a nessun dominio).
&lt;br /&gt;Se, però, siamo sicuri che la nostra macchina sarà l'unica facente parte della farm SharePoint, abbiamo la possibilità di creare comunque la nostra farm, utilizzando Powershell.
&lt;br /&gt;
&lt;br /&gt;Il comando da lanciare è il comando "New-SPConfigurationDatabase", che chiederà come parametri di creazione il nome del database di configurazione, il nome del database server e l'utenza con cui accedere a questo database.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/InstallLocalAccount/03.jpg" alt="Il comando New-SPConfigurationDatabase" /&gt;
&lt;br /&gt;
&lt;br /&gt;La scelta dell'utente verrà fatta tramite la finestra di login di windows.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/InstallLocalAccount/02.jpg" alt="Finestra di inserimeto username e password per l account di servizio di SharePoint" /&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, verrà creato un nuovo database di configurazione di SharePoint all'interno di SQL Server che sarà la base della nostra nuova farm. Infatti, avviando nuovamente l'utility "SharePoint Products Configuration Wizard", quest'ultima si accorgerà della presenza di una farm SharePoint e ci permetterà così di procedere con l'installazione del prodotto.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/InstallLocalAccount/04.jpg" alt="Farm creata" /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/InstallLocalAccount/05.jpg" alt="Configurazione della farm" /&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, abbiamo la nostra installazione di SharePoint 2010 in modalità avanzata, in una macchina a sé stante.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Powershell.aspx" title="TAG: Powershell"&gt;Powershell&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInstallaSharePoint2010FarmWithALocalAccount.aspx" /><issued>2010-5-2T18:56:37+01:00</issued><modified>2010-5-2T18:56:37+01:00</modified></entry><entry><title>SharePoint 2010 non supporta pi&#249; l'installazione standalone su un domain controller</title><id>/Blog/SharePoint2010DoesntSupportStandaloneInstallationOnDomainController.aspx</id><created>2010-4-26T18:21:28+01:00</created><content type="text/html" mode="escaped">Dalle prime installazioni della RTM di SharePoint 2010 arrivano le prime notizie..
&lt;br /&gt;Microsoft ha deciso di nascondere dall'interfaccia grafica dell'utility di installazione del prodotto, l'opzione di configurare SharePoint in modalità standalone da quelle macchine dove è già installato un Domain Controller, questo perchè SQL Server Express 2008 non è supportato in un Domain Controller.
&lt;br /&gt;Non supportato, ovviamente, non significa non funzionante :)
&lt;br /&gt;
&lt;br /&gt;Lanciando il setup da riga di comando, infatti, è possibile installare comunque la versione standalone di SharePoint 2010 su un Domain Controller (ovviamente fatelo SOLO su macchine di sviluppo o utilizzate per delle demo).
&lt;br /&gt;Ecco i parametri per completare l'installazione standalone:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;setup.exe /config FILES\SETUP\config.xml&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Ricordo che è possibile visualizzare la lista di tutti i parametri dell'utility di installazione eseguendo il comando:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;setup.exe /?&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010DoesntSupportStandaloneInstallationOnDomainController.aspx" /><issued>2010-4-26T18:21:28+01:00</issued><modified>2010-4-26T18:21:28+01:00</modified></entry><entry><title>SharePoint 2010 e Office 2010 RTM disponibili per il download</title><id>/Blog/SharePoint2010Office2010RTMAvailableForDownload.aspx</id><created>2010-4-24T14:33:3+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/sharepoint2010.png" alt="SharePoint 2010" style="float: right" /&gt;Da un paio di giorni, sono disponibili per il download le RTM di SharePoint 2010 e Office 2010 per tutti gli abbonati MSDN. Inoltre, sono stati anche pubblicati i download gratuiti di SharePoint Foundation 2010 e SharePoint Designer 2010 all'interno dell'area download di Microsoft.
&lt;br /&gt;Ecco tutti i riferimenti:
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;SharePoint Foundation 2010&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=49c79a8a-4612-4e7d-a0b4-3bb429b46595" title="SharePoint Foundation 2010 download" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=49c79a8a-4612-4e7d-a0b4-3bb429b46595&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;SharePoint Designer 2010 (32 bit)&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d88a1505-849b-4587-b854-a7054ee28d66" title="SharePoint Designer 2010 (32 bit) download" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=d88a1505-849b-4587-b854-a7054ee28d66&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="text-decoration: underline"&gt;SharePoint Designer 2010 (64 bit)&lt;/span&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=566d3f55-77a5-4298-bb9c-f55f096b125d" title="SharePoint Designer 2010 (64 bit)" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=566d3f55-77a5-4298-bb9c-f55f096b125d&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Per i language pack, dobbiamo ancora aspettare un pò.
&lt;br /&gt;Però finalmente ci siamo !!!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Designer.aspx" title="TAG: SharePoint Designer"&gt;SharePoint Designer&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2010.aspx" title="TAG: Office 2010"&gt;Office 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010Office2010RTMAvailableForDownload.aspx" /><issued>2010-4-24T14:33:3+01:00</issued><modified>2010-4-24T14:33:3+01:00</modified></entry><entry><title>Come rendere il log di MOSS 2007 il pi&#249; verboso possibile</title><id>/Blog/HowToMakeMOSS2007LogsAsMoreVerboseAsPossible.aspx</id><created>2010-4-20T18:9:34+01:00</created><content type="text/html" mode="escaped">Da interfaccia grafica, possiamo settare il log di SharePoint in modo tale da salvare un alto numero di informazinoi di log riguardanti le operazioni fatte su di esso. Tale interfaccia grafica però, non specifica al sistema di log di SharePoint di essere il più verboso possibile. Questo possiamo farlo solamente tramite l'utility stsasm, in questo modo:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;cd &lt;span style="color: #A31515"&gt;"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN"&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IndexerClient"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IndexerPlugin"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"Arpi"&lt;/span&gt; -tracelevel verbose             
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GatherStatus "&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GatherSvc    "&lt;/span&gt; -tracelevel verbose     
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GatherDirMon "&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GatherDirMonQ"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GathererLink "&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"GathererSql  "&lt;/span&gt; -tracelevel verbose             
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"ScopesCompilation"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"ScopesPlugin "&lt;/span&gt; -tracelevel verbose              
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"SimplePI"&lt;/span&gt; -tracelevel verbose 
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"PHSts"&lt;/span&gt; -tracelevel verbose        
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"FeatureExtractorPlugin"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"FilterDaemon"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"FTEAdmin"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"FTEAdmin"&lt;/span&gt; -tracelevel verbose              
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"EventLog"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"Exceptions"&lt;/span&gt; -tracelevel verbose              
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IDXPIEventLog"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IDXPIFTECursor"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IDXPIPerfCntr"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"IDXPIPlugin"&lt;/span&gt; -tracelevel verbose                  
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"MS Search Indexing"&lt;/span&gt; -tracelevel verbose   
&lt;br /&gt;stsadm -o setlogginglevel -category &lt;span style="color: #A31515"&gt;"MS Search Propagation"&lt;/span&gt; -tracelevel verbose 
&lt;br /&gt;
&lt;br /&gt;stsadm -o setlogginglevel -tracelevel verbose&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Occhio però che, così facendo, vedrete i vostri log crescere a dismisura perchè inizieranno ad inglobare tantissime informazioni sulle operazioni effettuate sull'interfaccia di ShaerPoint.
&lt;br /&gt;Per ritornare indietro (qunidi ad una situazione normale del sistema di logging) è necessario eseguire questo comando:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o setlogginglevel -&lt;span style="color: #0000FF"&gt;default&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Spero possa essere utile a qualcuno..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS 2007.aspx" title="TAG: MOSS 2007"&gt;MOSS 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/STSADM.aspx" title="TAG: STSADM"&gt;STSADM&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToMakeMOSS2007LogsAsMoreVerboseAsPossible.aspx" /><issued>2010-4-20T18:9:34+01:00</issued><modified>2010-4-20T18:9:34+01:00</modified></entry><entry><title>SharePoint 2010 raggiunge la versione RTM</title><id>/Blog/SharePoint2010ReachesRTM.aspx</id><created>2010-4-17T11:28:15+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Images/SharePoint-2010-logo.png" alt="SharePoint 2010" style="float: right;" /&gt;Questo è veramente un periodo pieno di rilasci.. Oggi, direttamente dal &lt;a href="http://blogs.msdn.com/sharepoint/archive/2010/04/16/sharepoint-2010-reaches-rtm.aspx" title="SharePoint 2010 reaches RTM!" target="_blank"&gt;blog del team di SharePoint&lt;/a&gt;, Jeff Teper ha annunciato il raggiungimento della versione RTM per SharePoint 2010, Office 2010, Visio 2010 e Project 2010.
&lt;br /&gt;Il prodotto sarà scaricabile dal 27 di aprile nelle seguenti lingue: inglese, francese, tedesco, spagnolo, russo e olandese. Le altre lingue arriveranno subito dopo.
&lt;br /&gt;Mentre invece, il 12 maggio, ci sarà un evento on-line per la presentazione del prodotto. Questo il sito:
&lt;br /&gt;&lt;a href="http://www.the2010event.com/" title="" target="_blank"&gt;http://www.the2010event.com&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ci siamo quasi eh...
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2010.aspx" title="TAG: Office 2010"&gt;Office 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010ReachesRTM.aspx" /><issued>2010-4-17T11:28:15+01:00</issued><modified>2010-4-17T11:28:15+01:00</modified></entry><entry><title>Errore &quot;Cannot display help&quot; sulla pagina di help di SharePoint</title><id>/Blog/ErrorCannotDisplayHelpConSharePointHelpPage.aspx</id><created>2010-3-20T10:21:18+01:00</created><content type="text/html" mode="escaped">In questa settimana, durante il &lt;a href="http://www.peppedotnet.it/Blog/CorsiGratuitiPerPartnerMicrosoftAMilanoSuASPNETSP1MVCSiverlight.aspx" title="Corso di Silverlight 3.0 a Milano" target="_blank"&gt;corso di Silverlight&lt;/a&gt;, un mio cliente mi avvisa che la pagina di help di SharePoint Services 3.0, ritorna un errore che non permette la corretta consultazione dell'help stesso. Faccio per controllare ed effettivamente la pagina iniziale dell'help ritorna questo specifico errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Cannot display help. Technical details: HC not found. (MS.WSS.manifest , 1033)&lt;/div&gt;
&lt;br /&gt;Che, sulla mia installazione SharePoint con language pack in italiano, veniva visualizzato come in figura.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/erroreHelpWSS.jpg" alt="Impossibile visualizzare la guida in linea" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per risolvere questo problema, bisogna prima controllare che l'utente con cui gira l'application pool di SharePoint sia correttamente inserito all'interno del gruppo "HelpGroup" reperibile all'interno della Central Administration seguendo questa serie di collegamenti:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;CentralAdmin &gt; Site Actions &gt; Site Settings &gt; People and Groups &gt; Groups &gt;  HelpGroup&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Se l'utente è già presente all'interno di quel gruppo, è necessario allora lanciare l'esecuzione di un'utility a riga di comando in modo da riabilitare l'help. I comandi sono i seguenti:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;hcinstal.exe /act InstallOneHC /loc 1033 /mns MS.WSS
&lt;br /&gt;hcinstal.exe /act InstallOneHC /loc 1033 /mns MS.WSS.ADMIN&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Da eseguire all'interno del percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;E tutto torna a funzionare come dovrebbe.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorCannotDisplayHelpConSharePointHelpPage.aspx" /><issued>2010-3-20T10:21:18+01:00</issued><modified>2010-3-20T10:21:18+01:00</modified></entry><entry><title>Corso: SharePoint Foundation 2010 - le novit&#224; per sviluppatori</title><id>/Blog/CorsoSharePointFoundation2010NovitaPerSviluppatori.aspx</id><created>2010-3-15T10:20:25+01:00</created><content type="text/html" mode="escaped">Il prossimo aprile, precisamente il 22 e in 23, in collaborazione con &lt;a href="http://www.msys.it" title="Microsys" target="_blank"&gt;Microsys&lt;/a&gt; e &lt;a href="http://www.pcsnet.it/" title="PCSNet" target="_blank"&gt;PCSNet&lt;/a&gt;, abbiamo organizzato un Hands On Lab di 2 giorni sulle principali novità per sviluppatori offerte da SharePoint Foundation 2010, la versione gratuita di SharePoint, in attesa dell'uscita della RTM.
&lt;br /&gt;Il corso, che si terrà a Milano, darà la possibilità di metter mano direttamente sul codice e di apprendere tutte le nuove funzionalità della piattaforma di collaborazione, partendo dai nuovi meccanismi di data provisioning e arrivando all'utilizzo dei Business Connectivity Services, di LINQ to SharePoint e del nuovo Client Object Model.
&lt;br /&gt;Vi riporto qua la scaletta:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;GIORNO 1 - 22 Aprile 2010&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;09:15 - 09:30 - Registrazione dei Partecipanti
&lt;br /&gt;09:30 - 10.00 - Le novità di SharePoint 2010 per gli sviluppatori
&lt;br /&gt;10.00 - 11.15 - Nuove funzionalità su liste e strutture: data provisioning, eventi, relazioni e aggregazioni.
&lt;br /&gt;11:15 - 11:30 - Coffee Break
&lt;br /&gt;11:30 - 12:45 - Sessione Hands On Lab: Parte 1
&lt;br /&gt;12:45 - 13:45 - Pranzo
&lt;br /&gt;13:45 - 15:15 - Client Object Model: dati SharePoint su applicazioni client, Silverlight e javascript
&lt;br /&gt;15:15 - 15:30 - Coffee Break
&lt;br /&gt;15:30 - 16:45 - Sessione Hands On Lab: Parte 2
&lt;br /&gt;16:45 - 17:00 - Sessione Q&amp;A e Conclusioni
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;GIORNO 2 - 23 Aprile 2010&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;09:30 - 11:00 - LINQ to SharePoint: sintassi SQL-like per l’accesso ai dati di SharePoint
&lt;br /&gt;11:00 - 11:15 - Coffee Break
&lt;br /&gt;11:15 - 12:30 - Sessione Hands On Lab: Parte 3
&lt;br /&gt;12:30 - 13:45 - Pranzo
&lt;br /&gt;13:45 - 15:00 - Business Connectivity Services: liste e colonne di dati esterni.
&lt;br /&gt;15:00 - 15:15 - Coffee Break
&lt;br /&gt;15:15 - 16:30 - Sessione Hands On Lab: Parte 4
&lt;br /&gt;16:30 - 17:00 - Sessione Q&amp;A e Conclusioni
&lt;br /&gt;
&lt;br /&gt;Il corso lo terrò io, quindi se volete più informazioni tecniche scrivete pure a me, altrimenti per iscrivervi o avere altro genere di informazioni visitate la pagina ufficiale del corso: &lt;a href="http://www.msys.it/Formazione" title="SharePoint Foundation 2010:le Novità per gli Sviluppatori" target="_blank"&gt;http://www.msys.it/Formazione&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CorsoSharePointFoundation2010NovitaPerSviluppatori.aspx" /><issued>2010-3-15T10:20:25+01:00</issued><modified>2010-3-15T10:20:25+01:00</modified></entry><entry><title>Andata..</title><id>/Blog/MicrosoftSharePointConferenceSummary.aspx</id><created>2010-3-12T11:59:56+01:00</created><content type="text/html" mode="escaped">Ieri era l'ultimo giorno, dei tre, della &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference 2010" target="_blank"&gt;Microsoft SharePoint &amp; Office Conference 2010&lt;/a&gt; che si è tenuta qui a Milano. Era la mia prima conferenza vista e vissuta dall'altro lato della cattedra e devo dire che è stata proprio una gran bella esperienza..
&lt;br /&gt;E' stato tutto veramente particolare. 
&lt;br /&gt;Un'organizzazione fantastica, precisa al millimetro su tutto (pensate che addirittura sono stato bloccato mentre cercavo di andare a mangiare nell'area dei partecipanti, senza andare in quella per lo staff.. :)
&lt;br /&gt;Un sacco di partecipanti, ma veramente tanti. Il che mi ha fatto sia tremar le gambe prima di salir sul palco e, devo dir la verità, anche mentre ci stavo sopra, sia un gran piacere quando, passando tra i corridoi, vedevo gli occhi di tutti girarsi, salutare e sorridere.
&lt;br /&gt;Un sacco di persone alle mie due sessioni. Ma questo non è stato così tanto un piacere quanto veder più della metà di loro alzare la mano alla domanda: "quanti di voi hanno già visitato il mio sito ?".
&lt;br /&gt;Un tranquillità e disponibilità infinita tra gli speaker e lo staff, che mi ha fatto sembrare tutto veramente naturale. Ho ricontrato persone che avevo già visto, visto quelle che conoscevo solo via internet e conosciuto delle nuove, tutte splendide.
&lt;br /&gt;Un livello tecnico davvero notevole. Proprio di tutti.
&lt;br /&gt;
&lt;br /&gt;Non so se si è capito, ma è stato tutto veramente fantastico.
&lt;br /&gt;
&lt;br /&gt;In primis quindi, volevo ringraziare &lt;a href="http://blogs.devleap.com/paolo/" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; e &lt;a href="http://www.macori.it" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, perchè l'opportunità è venuta proprio da loro.
&lt;br /&gt;Poi &lt;a href="http://www.myrocode.com" title="Miro Radenovic" target="_blank"&gt;Miro&lt;/a&gt;, ovviamente, per essermi stato a fianco prima, durante e dopo.
&lt;br /&gt;Infine, in ordine sparso.. &lt;a href="http://blogs.devleap.com/devlizard" title="Claudio Brotto" target="_blank"&gt;Claudio&lt;/a&gt;, &lt;a href="http://www.sharepointconference.it/speakers.aspx#Elisabetta_Sasselli" title="Elisabetta Sasselli" target="_blank"&gt;Elisabetta&lt;/a&gt;, &lt;a href="http://nonsolosharepoint.wordpress.com/" title="Barbara Falchi" target="_blank"&gt;Barbara&lt;/a&gt;, &lt;a href="http://www.nonaka.eu/" title="Romeo Pruno" target="_blank"&gt;Romeo&lt;/a&gt;, &lt;a href="http://www.sharepointconference.it/speakers.aspx#Marco_Castellani" title="Marco Castellani" target="_blank"&gt;Marco&lt;/a&gt;, &lt;a href="http://alberto.casu.it/" title="Alberto Casu" target="_blank"&gt;Alberto&lt;/a&gt;, &lt;a href="http://blogs.devleap.com/marcorizz/" title="Marco Rizzi" target="_blank"&gt;Marco&lt;/a&gt; e &lt;a href="http://sharepointpig.wordpress.com/" title="Riccardo Celesti" target="_blank"&gt;Riccardo&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MicrosoftSharePointConferenceSummary.aspx" /><issued>2010-3-12T11:59:56+01:00</issued><modified>2010-3-12T11:59:56+01:00</modified></entry><entry><title>Open link into new window SharePoint list definition</title><id>/Blog/OpenLinkIntoNewWindowSharePointListDefinition.aspx</id><created>2010-3-8T15:26:28+01:00</created><content type="text/html" mode="escaped">Una delle piccole mancanze di SharePoint 2007 è la possibilità di scegliere, sugli elementi di una lista di link, se questi devono essere aperti nella stessa pagina del browser o se deve essere utilizzata una nuova pagina.
&lt;br /&gt;Per i collegamenti esterni, le web part di MOSS 2007 permettono questo comportamento, ma non lo fanno per tutti i link interni. Perciò ho creato una list definition particolare, per dare agli utenti finali la possibilità di scegliere se aprire o meno una nuova finestre per tutti i link interni a SharePoint.
&lt;br /&gt;
&lt;br /&gt;La list definition è disponibile tramite una feature. La feature in questione abilita il modello di lista con la funzionalità di apertura dei link in una nuova finestra.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/OpenInNewWindow_2.JPG" alt="Open link into new window SharePoint list definition" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta creata una lista, a partire dalla list definition descritta, abbiamo la possibilità di specificare se aprire o meno il link su una nuova finestra valorizzando un campo di tipo boolean.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/OpenInNewWindow_3.JPG" alt="Open link into new window SharePoint list definition" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Ho anche creato un progetto su codeplex. Non c'è tanto da aggiornare, ma di sicuro a qualcuno risulta utile.
&lt;br /&gt;Questo l'indirizzo del progetto:
&lt;br /&gt;&lt;a href="http://openlinkinnewwindow.codeplex.com/" title="SharePoint - Open internal link into a new window" target="_blank"&gt;http://openlinkinnewwindow.codeplex.com/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/List definition.aspx" title="TAG: List definition"&gt;List definition&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OpenLinkIntoNewWindowSharePointListDefinition.aspx" /><issued>2010-3-8T15:26:28+01:00</issued><modified>2010-3-8T15:26:28+01:00</modified></entry><entry><title>Finalmente la data ufficiale del rilascio di SharePoint 2010 e Office 2010</title><id>/Blog/LaunchDateOfSharePoint2010AndOffice2010.aspx</id><created>2010-3-6T9:33:20+01:00</created><content type="text/html" mode="escaped">Ho appena letto il post di &lt;a href="http://blogs.msdn.com/arpans" title="Arpan Shah" target="_blank"&gt;Arpan Shah&lt;/a&gt; riguardo l'annuncio della data ufficiale di rilascio di SharePoint 2010 e Office 2010.
&lt;br /&gt;La data in questione è il 12 maggio 2010 !!!
&lt;br /&gt;Inoltre, è stata anche annunciata una RTM nel mese di aprile.
&lt;br /&gt;Ecco il link diretto dell'annuncio:
&lt;br /&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2010/03/05/sharepoint-2010-office-2010-launch.aspx" title="SharePoint 2010 &amp; Office 2010 Launch" target="_blank"&gt;http://blogs.msdn.com/sharepoint/archive/2010/03/05/sharepoint-2010-office-2010-launch.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Direi che ormai ci siamo !
&lt;br /&gt;Se non lo sapete ancora, potete vedere tutte le novità di SharePoint 2010 alla Microsoft SharePoint Conference che si terrà qui a Milano il 9, 10 e 11 marzo 2010.
&lt;br /&gt;
&lt;br /&gt;&lt;a title="Microsoft SharePoint Office Conference 2010" href="http://www.sharepointconference.it/" target="_blank"&gt;&lt;img alt="Microsoft SharePoint Office Conference 2010" src="http://www.peppedotnet.it/Images/728x90_spoc2010_201209_it.jpg"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Office 2010.aspx" title="TAG: Office 2010"&gt;Office 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/LaunchDateOfSharePoint2010AndOffice2010.aspx" /><issued>2010-3-6T9:33:20+01:00</issued><modified>2010-3-6T9:33:20+01:00</modified></entry><entry><title>Formato delle date durante l'utilizzo del web service Lists.asmx di SharePoint</title><id>/Blog/DateTimeFormatWithSharePointListsWebService.aspx</id><created>2010-3-3T11:17:30+01:00</created><content type="text/html" mode="escaped">Utilizzando il web service &lt;a href="http://msdn.microsoft.com/en-us/library/lists.aspx" title="Lists Web Service" target="_blank"&gt;"Lists.asmx"&lt;/a&gt; e in particolare il metodo UpdateListItems, abbiamo la possibilità di creare, aggiornare e cancellare elementi di liste SharePoint da applicazioni esterne. Ok lo so, questo lo sapete già...
&lt;br /&gt;Ma magari non sapete che se abbiamo la necessità di inserire o aggiornare dei campi di tipo data e ora, dobbiamo formattare questi valori secondo le specifiche ISO 8601. Infatti, l'utilizzo del metodo UpdateListItems in questo modo:
&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;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; InsertElement(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; title)
&lt;br /&gt;{
&lt;br /&gt;    ListsWebService.Lists service = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ListsWebService.Lists();
&lt;br /&gt;    service.Url = &lt;span style="color: #A31515"&gt;"http://YOURSITEURL/_vti_bin/Lists.asmx"&lt;/span&gt;;
&lt;br /&gt;    service.Credentials = CredentialCache.DefaultCredentials;  
&lt;br /&gt;          
&lt;br /&gt;    XmlDocument doc = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XmlDocument();
&lt;br /&gt;    XmlElement updates = doc.CreateElement(&lt;span style="color: #A31515"&gt;"Batch"&lt;/span&gt;);
&lt;br /&gt;    updates.InnerXml = &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Format(
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Method ID='1' Cmd='New'&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='ID'&gt;New&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='Title'&gt;&lt;![CDATA[{0}]]&gt;&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='Expires'&gt;{1}&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;/Method&gt;"&lt;/span&gt;,
&lt;br /&gt;        title, DateTime.Now.AddDays(15));
&lt;br /&gt;
&lt;br /&gt;    XmlNode node = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;    node = service.UpdateListItems(&lt;span style="color: #A31515"&gt;"LIST NAME"&lt;/span&gt;, updates);
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;genera il seguente errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;ErrorCode: 0x8102001c
&lt;br /&gt;ErrorText: Invalid date/time value. A date/time field contains invalid data. Please check the value and try again.&lt;/div&gt;
&lt;br /&gt;Questo perchè la data non è stata formattata correttamente secondo il formato ISO 8601. Per farlo è possibile richiamare il metodo ToString() della classe DateTime passando come parametro la formattazione "yyyy-MM-ddThh:mm:ssZ".
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;DateTime.Now.AddDays(15).ToString(&lt;span style="color: #A31515"&gt;"yyyy-MM-ddThh:mm:ssZ"&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Oppure, onde evitare possibili errori di scrittura della stringa di formattazione della data, possiamo utilizzare il metodo &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.createiso8601datetimefromsystemdatetime.aspx" title="CreateISO8601DateTimeFromSystemDateTime method" target="_blank"&gt;CreateISO8601DateTimeFromSystemDateTime&lt;/a&gt; della classe &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.aspx" title="SPUitlity class" target="_blank"&gt;SPUtility&lt;/a&gt;.
&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;static&lt;/span&gt; &lt;span style="color: #0000FF"&gt;void&lt;/span&gt; InsertElement(&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; title)
&lt;br /&gt;{
&lt;br /&gt;    ListsWebService.Lists service = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; ListsWebService.Lists();
&lt;br /&gt;    service.Url = &lt;span style="color: #A31515"&gt;"http://YOURSITEURL/_vti_bin/Lists.asmx"&lt;/span&gt;;
&lt;br /&gt;    service.Credentials = CredentialCache.DefaultCredentials;      
&lt;br /&gt;      
&lt;br /&gt;    XmlDocument doc = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XmlDocument();
&lt;br /&gt;    XmlElement updates = doc.CreateElement(&lt;span style="color: #A31515"&gt;"Batch"&lt;/span&gt;);
&lt;br /&gt;    updates.InnerXml = &lt;span style="color: #0000FF"&gt;string&lt;/span&gt;.Format(
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Method ID='1' Cmd='New'&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='ID'&gt;New&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='Title'&gt;&lt;![CDATA[{0}]]&gt;&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;Field Name='Expires'&gt;{1}&lt;/Field&gt;"&lt;/span&gt; +
&lt;br /&gt;        &lt;span style="color: #A31515"&gt;"&lt;/Method&gt;"&lt;/span&gt;,
&lt;br /&gt;        title, SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Now.AddDays(15)));
&lt;br /&gt;
&lt;br /&gt;    XmlNode node = &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;;
&lt;br /&gt;    node = service.UpdateListItems(&lt;span style="color: #A31515"&gt;"LIST NAME"&lt;/span&gt;, updates);
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Davvero utile !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS 2007.aspx" title="TAG: MOSS 2007"&gt;MOSS 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SPUtility.aspx" title="TAG: SPUtility"&gt;SPUtility&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DateTimeFormatWithSharePointListsWebService.aspx" /><issued>2010-3-3T11:17:30+01:00</issued><modified>2010-3-3T11:17:30+01:00</modified></entry><entry><title>Come installare il VSeWSS upgrade tool per Visual Studio 2010</title><id>/Blog/HowToInstallVSeWSSUpgradeToolOnVisualStudio2010.aspx</id><created>2010-2-26T18:47:9+01:00</created><content type="text/html" mode="escaped">Microsoft ha rilasciato già da un pò, in versione beta, un tool per la migrazione dei progetti MOSS 2007 sviluppati tramite i VSeWSS a progetti Visual Studio 2010.
&lt;br /&gt;Il tool è davvero ben fatto e facilita notevolmente l'upgrade delle personalizzazioni dalla vecchia versione di SharePoint alla nuova, senza la necessità di fare troppe operazioni manuali.
&lt;br /&gt;Per installarlo però, non basta solamente scaricare l'eseguibile e lanciarlo, ma sono necessari dei passi aggiuntivi.. eccoli nel dettaglio.
&lt;br /&gt;
&lt;br /&gt;1- Scaricare il tool a questo indirizzo: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=41019a15-8c73-497c-97fb-502a619a6c46&amp;displaylang=en" title="Visual Studio 2010 (Beta) migration tool for VSeWSS SharePoint projects" target="_blank"&gt;VSeWSS_Upgrade_Sample_Beta_20100108.msi&lt;/a&gt;
&lt;br /&gt;2- Assicurarsi di aver chiuso tutte le istanze di Visual Studio 2010
&lt;br /&gt;3- Avviare l'installer
&lt;br /&gt;4- Andare alla cartella "C:\Program Files (x86)\Microsoft\VSeWSS Upgrade"
&lt;br /&gt;5- Eseguire il file "VSeWSSUpgrade_Beta2_20091203.msi", che installa effettivamente il template all'interno di Visual Studio
&lt;br /&gt;6- Aprire il command prompt dei tool di Visual Studio
&lt;br /&gt;7- Eseguire il comando "devneve /installvstemplates"
&lt;br /&gt;8- Aprire Visual Studio 2010
&lt;br /&gt;
&lt;br /&gt;Una volta eseguite queste operazioni, sarete in grado di utilizzare il tool di upgrade delle soluzioni VSeWSS a Visual Studio 2010.
&lt;br /&gt;Questo e tanto altro ancora, nella &lt;a href="http://www.sharepointconference.it/sessions.aspx#22" title="Aggiornare soluzioni MOSS2007 a SharePoint 2010" target="_blank"&gt;mia sessione&lt;/a&gt; alla &lt;a href="http://www.sharepointconference.it" title="SharePoint Conference" target="_blank"&gt;SharePoint Conference&lt;/a&gt;, riguardo l'aggiornamento di soluzioni MOSS 2007 a SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/VSeWSS Upgrade.aspx" title="TAG: VSeWSS Upgrade"&gt;VSeWSS Upgrade&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInstallVSeWSSUpgradeToolOnVisualStudio2010.aspx" /><issued>2010-2-26T18:47:9+01:00</issued><modified>2010-2-26T18:47:9+01:00</modified></entry><entry><title>Screencast: SharePoint 2010 Business Connectivity Services</title><id>/Blog/SharePoint2010BusinessConnectivityServicesScreencast.aspx</id><created>2010-2-21T9:58:35+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.peppedotnet.it/Media/BCSDemo.jpg" alt="Business Connectivity Services" border="0" style="float: right; margin-left: 10px;" /&gt;Continua questa piccola serie di mini-screencast riguardo le novità presenti su SharePoint 2010. Dopo la funzione di &lt;a href="http://www.peppedotnet.it/Blog/ScreenCastSharePoint2010ListValidation.aspx" title="SharePoint 2010 List Validation Engine" target="_blank"&gt;validazione su liste&lt;/a&gt;, questa è la volta dei Business Connectivity Services (BCS), tecnologia utile a leggere dati da fonti esterne a SharePoint e presentarli tramite le nuove interfaccie della piattaforma di collaborazione Microsoft.
&lt;br /&gt;In parole povere i BCS sono una versione molto evoluta del Business Data Catalog di MOSS 2007, che risulta però disponibile anche in SharePoint Foundation 2010, la versione di SharePoint disponibile grauitamente con una licenza Windows Server.
&lt;br /&gt;Questo il link diretto al video:
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Media/SharePoint%202010%20Business%20Connectivity%20Services.aspx" title="Screencast: SharePoint 2010 Business Connectivity Services"&gt;http://www.peppedotnet.it/Media/SharePoint 2010 Business Connectivity Services.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buona visione ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Business Connectivity Services.aspx" title="TAG: Business Connectivity Services"&gt;Business Connectivity Services&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010BusinessConnectivityServicesScreencast.aspx" /><issued>2010-2-21T9:58:35+01:00</issued><modified>2010-2-21T9:58:35+01:00</modified></entry><entry><title>L'agenda della SharePoint Conference &#232; stata completata !!</title><id>/Blog/TheSharePointAndOfficeConferenceAgendaHasBeenCompleted.aspx</id><created>2010-2-17T12:35:59+01:00</created><content type="text/html" mode="escaped">Ho appena saputo che è stata completata l'agenda per la Microsoft SharePoint &amp; Office Conference 2010 che si terrà qui a Milano il 9-10-11 marzo.
&lt;br /&gt;Ecco il link diretto:
&lt;br /&gt;&lt;A title="Agenda Microsoft SharePoint Office Conference 2010" href="http://www.sharepointconference.it/agenda.aspx" target="_blank"&gt;http://www.sharepointconference.it/agenda.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;E' stata aggiunta un nuova sessione sul licensing, argomento sempre molto attuale e che molto spesso non è chiaro a tutti.
&lt;br /&gt;Poi, sono stati creati tre momenti di incontro tra noi speakers e voi, per permettervi di bombardarci di domande su quello che avete visto durante le giornate di conferenza o su tematiche generali sempre riguardanti SharePoint ed Office. Questi incontri sono stati divisi uno per giornata, come segue:
&lt;br /&gt;
&lt;br /&gt;- Q&amp;A per professionisti IT (9 marzo)
&lt;br /&gt;- Q&amp;A per sviluppatori (10 marzo)
&lt;br /&gt;- Q&amp;A per site builders (11 marzo)
&lt;br /&gt;
&lt;br /&gt;Io sarò disponibile, ovviamente, nella seconda giornata.
&lt;br /&gt;A questo punto ormai, penso che chi voleva venire si sia già iscritto approfittando degli sconti che ci sono stati fino a poco tempo fa. Ma, se c'è qualcuno che è ancora indeciso, gli consiglio vivamente di venire perchè sarà un evento eccezionale.
&lt;br /&gt;
&lt;br /&gt;&lt;A title="Microsoft SharePoint Office Conference 2010" href="http://www.sharepointconference.it/" target="_blank"&gt;&lt;IMG alt="Microsoft SharePoint Office Conference 2010" src="http://www.peppedotnet.it/Images/728x90_spoc2010_201209_it.jpg" /&gt;&lt;/A&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/TheSharePointAndOfficeConferenceAgendaHasBeenCompleted.aspx" /><issued>2010-2-17T12:35:59+01:00</issued><modified>2010-2-17T12:35:59+01:00</modified></entry><entry><title>Errore: &quot;Error occurred in deployment step 'Recycle IIS Application Pool'&quot;</title><id>/Blog/ErrorOccurredInDeploymentStepRecycleIISApplicationPool.aspx</id><created>2010-2-13T11:31:35+01:00</created><content type="text/html" mode="escaped">Iniziando a sviluppare per SharePoint 2010 attraverso gli strumenti di sviluppo offerti da Visual Studio 2010, vi troverete sicuramente di fronte al seguente problema.
&lt;br /&gt;Spostando un progetto da un'ambiente di sviluppo ad un altro e provando a ricompilare, l'IDE di sviluppo completerà correttamente la fase di compilazione e creazione del package, ma andrà in errore durante la fase di deploy della vostra personalizzazione su SharePoint. L'errore generato sarà di questo tipo:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Error occurred in deployment step 'Recycle IIS Application Pool': Cannot connect to the SharePoint site: http://YOUR_SITE_NAME/. Make sure that this is a valid URL and the SharePoint site is running on the local computer. If you moved this project to a new computer or if the URL of the SharePoint site has changed since you created the project, update the Site URL property of the project.&lt;/div&gt;
&lt;br /&gt;Questo perchè, alla creazione di un nuovo progetto SharePoint, Visual Studio chiede quale dev'essere l'indirizzo della site collection in cui effettuare il deploy e se lo salva all'interno delle proprietà del progetto. Spostando la soluzione e i vari file di progetto è necessario aggiornare a mano tale indirizzo.
&lt;br /&gt;Per farlo, dobbiamo selezionare il progetto dalla toolbox "Solution Explorer" e successivamente aprire la toolbox delle proprietà. Li troverete la proprietà "Site URL", che dovrà essere cambiata con il nuovo indirizzo della vostra site collection SharePoint 2010.
&lt;br /&gt;State attenti ad aprire la toolbox delle proprietà (visibile in figura) e NON le proprietà del progetto tramite l'utilizzo del tasto destro del mouse.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/changeDeployUrl.jpg" alt="Cambiare indirizzo di deployment di una soluzione SharePoint da Visual Studio 2010" border="0" /&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, basta provare a ricompilare e rieffettuare il deploy della soluzione.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/ErrorOccurredInDeploymentStepRecycleIISApplicationPool.aspx" /><issued>2010-2-13T11:31:35+01:00</issued><modified>2010-2-13T11:31:35+01:00</modified></entry><entry><title>Screencast: SharePoint 2010 list validation</title><id>/Blog/ScreenCastSharePoint2010ListValidation.aspx</id><created>2010-2-12T11:25:16+01:00</created><content type="text/html" mode="escaped">Oggi ho inserito un nuovo screencast sotto la sezione "Media" di peppedotnet. E' un breve video sull'utilizzo della nuova funzionalità di validazione di liste e colonne presente su SharePoint 2010.
&lt;br /&gt;Se può interessare, ecco il link diretto:
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/Media/SharePoint%202010%20List%20validation.aspx" title="SharePoint 2010 ScreenCast: List validation"&gt;http://www.peppedotnet.it/Media/SharePoint%202010%20List%20validation.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Tale funzionalità ci permette di scrivere velocemente delle formule di validazione del contenuto di una o più colonna di una lista SharePoint, senza dover scrivere dei campi custom o degli event handler (cosa che invece era d'obbligo con MOSS 2007 o WSS 3.0).
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/List validation.aspx" title="TAG: List validation"&gt;List validation&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ScreenCastSharePoint2010ListValidation.aspx" /><issued>2010-2-12T11:25:16+01:00</issued><modified>2010-2-12T11:25:16+01:00</modified></entry><entry><title>Stop di un workflow fatto con SharePoint designer all'invio di una mail ad un gruppo</title><id>/Blog/SharePointDesignerWorkflowStoppedWithEmailSentToAGroup.aspx</id><created>2010-2-11T8:22:0+01:00</created><content type="text/html" mode="escaped">Durante la costruzione di un workflow con SharePoint Designer 2007, ho avuto la necessità di inserire un'attività che spedisse un messaggio e-mail ad un certo gruppo di utenti SharePoint. Il gruppo in questione era creato correttamente all'interno del sito da cui facevo partire il mio workflow ed infatti, durante le varie fasi di test funzionava che era una meraviglia.
&lt;br /&gt;Ogni tanto però, quando il flusso arrivava all'esecuzione dell'attività di invio mail, passava direttamente in stato "Stoppped" e non c'era modo di farlo continuare.
&lt;br /&gt;Facendo delle prove con specifici utenti, mi sono accorto che se il workflow veniva lanciato da un utente che apparteneva al gruppo a cui io volevo spedire la mail allora non c'era alcun problema e tutto il flusso veniva eseguito senza alcun errore. Se invece erano altri utenti, non appartenenti al gruppo destinatario della mail, a far partire il workflow, quest'ultimo si fermava in stato "Stopped".
&lt;br /&gt;Dov'era il problema ? Semplicemente, il mio gruppo era configurata per permettere la lettura dei propri membri solamente ai membri stessi del gruppo; quindi, se un utente qualsiasi cercava di eseguire l'attività di invio mail, non aveva permessi per leggere gli utenti appartenenti al gruppo e a cui questa mail doveva essere inviata, causando lo stop del workflow.
&lt;br /&gt;Per risolvere questo problema è bastato semplicemente modificare la visibilità sul gruppo destinatario della mail (come visibile in figura).
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/WorkflowErrorSPDesigner.jpg" alt="Abilitare la visibilità dei membri di un gruppo" border="0" width="800px" /&gt;
&lt;br /&gt;
&lt;br /&gt;Fatto questo, il workflow ha ripreso a funzionare per tutti gli utenti.
&lt;br /&gt;La cosa pazzesca è che non viene segnalato alcun tipo di errore da nessuna parte (o almeno, io non ne ho trovati) e risulta veramente difficile capire il perchè del cambiamento di stato del workflow allo stato "Stoppped". Se qualcuno ci casca, spero legga questo post, perchè io ci ho perso un bel pò di tempo..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Workflow.aspx" title="TAG: Workflow"&gt;Workflow&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Designer.aspx" title="TAG: SharePoint Designer"&gt;SharePoint Designer&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointDesignerWorkflowStoppedWithEmailSentToAGroup.aspx" /><issued>2010-2-11T8:22:0+01:00</issued><modified>2010-2-11T8:22:0+01:00</modified></entry><entry><title>Errore: &quot;Failed to extract the cab file in the solution&quot;</title><id>/Blog/ErrorFailedToExtractTheCabFileInTheSolution .aspx</id><created>2010-2-9T13:52:0+01:00</created><content type="text/html" mode="escaped">Cercando di effettuare il deploy di una soluzione SharePoint 2007 tramite l'utility STSADM, sono incappato in questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Failed to extract the cab file in the solution&lt;/div&gt;
&lt;br /&gt;Tale errore, il più delle volte, è dato dalla presenza di righe identiche o all'interno dei file feature.xml o all'interno del file DDF che deve essere scritto per poi andare a creare la soluzione .wsp vera e propria. Questo può accadere spesso quando si procede con la creazione della soluzione in maniera manuale.
&lt;br /&gt;Se però utilizziamo dei tool per la generazione automatica del file .wsp, come potrebbero essere le estensioni per WSS di Visual Studio 2008 (VEsWSS 1.1, 1.2, 1.3), o WSPBuilder o gli Smart Templates, dobbiamo presumere che la creazione del file DDF venga effettuata correttamente e che, quindi, l'errore in questione sia generato da qualcos'altro.
&lt;br /&gt;In questo caso, le principali cause per cui viene generato questo errore sono:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La presenza di caratteri speciali (come per esempio ^ o la tilde) all'interno dei nomi del file feature.xml, del file manifest.xml o dei file XML secondari alle proprie features.&lt;/li&gt;&lt;li&gt;La presenza di file copiati due volte da altri già presenti, dove è stato mantenuto il nome "Copia (2) di..." o "Copy (2) of..." (nella versione inglese). Questi perchè contengono le tonde che evidentemente per l'utility STSADM non vanno bene.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Il mio caso era il secondo.. Avevo mantenuto in una cartella di immagini due copie delle stessa immagine e non c'era verso di completare correttamente il deploy della mia soluzione.
&lt;br /&gt;Una volta tolti quei file, è tornato tutto alla normalità.
&lt;br /&gt;Spero possa essere d'aiuto a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/STSADM.aspx" title="TAG: STSADM"&gt;STSADM&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorFailedToExtractTheCabFileInTheSolution .aspx" /><issued>2010-2-9T13:52:0+01:00</issued><modified>2010-2-9T13:52:0+01:00</modified></entry><entry><title>Principali errori durante l'installazione di SharePoint 2010 Beta 2</title><id>/Blog/CommonErrorsOnSharePoint2010Beta2InstallationAndConfigurationWizard.aspx</id><created>2010-2-7T21:19:26+01:00</created><content type="text/html" mode="escaped">Ormai sarò alla ventesima installazione della Beta 2 di SharePoint 2010 e ogni volta ne trovo una nuova.. chiavi di registro da cancellare, file di configurazione da modificare, hotifix, ecc..
&lt;br /&gt;Vi riporto un breve elenco di quello che potete trovarvi di fronte quando installate la beta 2 di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Il primo errore, l'ho segnalato in un &lt;a href="http://www.peppedotnet.it/Blog/ErrorFailedToCreateSampleDataDuringSharePoint2010Installation.aspx" title="Errore: Failed to create sample data durante l'installazione di SharePoint 2010" target="_blank"&gt;precedente post&lt;/a&gt; e risponde al messaggio:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px; border: 1px solid #C0C0C0; padding: 3px;"&gt;Failed to create sample Data. 
&lt;br /&gt;
&lt;br /&gt;An exception of type Microsoft.Office.Server.UserProfiles.UserProfileException was thrown. Addictional exception information: Unrecognized attribute 'allowInsecureTransport'. Note that attribute names are case-sensitive (C:\Program Files\Common Files\Microsoft Shared\Web Server Extentions\14\WebClients\Profile\client.config line 56)&lt;/div&gt;
&lt;br /&gt;La soluzione la trovate &lt;a href="http://www.peppedotnet.it/Blog/ErrorFailedToCreateSampleDataDuringSharePoint2010Installation.aspx" title="Errore: Failed to create sample data durante l'installazione di SharePoint 2010" target="_blank"&gt;qua&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Il secondo invece, riporta questa dicitura:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px; border: 1px solid #C0C0C0; padding: 3px;"&gt;Failed to register SharePoint services. 
&lt;br /&gt;
&lt;br /&gt;An exception of type System.ServiceProcess.TimeoutException was thrown.  Additional exception information: Time out has expired and the operation has not been completed. 
&lt;br /&gt;System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed. 
&lt;br /&gt;   at System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout)&lt;/div&gt;
&lt;br /&gt;Per risolvere questo errore è necessario scaricare ed installare un hotfix. Ecco i link:
&lt;br /&gt;- hotfix per Windows Server 2008 R2: &lt;a href="http://support.microsoft.com/kb/976462" title="A hotfix for the .NET Framework 3.5 Service Pack 1 is available for Windows 7 and for Windows Server 2008 R2 as a prerequisite for Microsoft Office SharePoint Server 2010 beta" target="_blank"&gt;http://support.microsoft.com/kb/976462&lt;/a&gt;
&lt;br /&gt;- hotfix per Windows Server 2008: &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=KB971831&amp;DownloadId=7285" title="A hotfix for the .NET Framework 3.5 Service Pack 1 is available for Windows 7 and for Windows Server 2008 as a prerequisite for Microsoft Office SharePoint Server 2010 beta" target="_blank"&gt;http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=KB971831&amp;DownloadId=7285&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Poi, questo il terzo:
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px; border: 1px solid #C0C0C0; padding: 3px;"&gt;Failed to create the configuration database. 
&lt;br /&gt;
&lt;br /&gt;An exception of type System.Security.Cryptography.CryptographicException was thrown.  Additional exception information: The data is invalid.&lt;/div&gt;
&lt;br /&gt;Per risolverlo è necessario semplicemente modificare l'ACL della "SharePoint root" (la cartella "14" per intenderci), aggiungere l'utente Network Service ed assegnargli i permessi di Full Control.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Il quarto invece:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px; border: 1px solid #C0C0C0; padding: 3px;"&gt;Setup is unable to proceed due to the following error(s): 
&lt;br /&gt;A system restart from a previous installation or update is pending. Restart your computer and run setup to continue. 
&lt;br /&gt;For the list of pre-requisites needed to install the product please refer to: 
&lt;br /&gt;http://go.microsoft.com/fwlink/?LinkId=106209 
&lt;br /&gt;Correct the issue(s) listed above and re-run setup.&lt;/div&gt;
&lt;br /&gt;Per risolverlo, prima di tutto, dobbiamo controllare i valori di queste due chiavi di registro:
&lt;br /&gt;- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile 
&lt;br /&gt;- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 
&lt;br /&gt;il valore della prima chiave DEVE essere 0. mentre la seconda chiave DEVE essere cancellata.
&lt;br /&gt;
&lt;br /&gt;Se ne avete riscontrati altri durente le vostre installazioni, sarebbe grandioso se gli segnalaste no ? :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/CommonErrorsOnSharePoint2010Beta2InstallationAndConfigurationWizard.aspx" /><issued>2010-2-7T21:19:26+01:00</issued><modified>2010-2-7T21:19:26+01:00</modified></entry><entry><title>Creazione di list definition in Microsoft SharePoint 2007</title><id>/Blog/SharePoint2007ListDefinitionCreation.aspx</id><created>2010-1-26T9:29:39+01:00</created><content type="text/html" mode="escaped">Oggi è on-line su &lt;a href="http://www.aspitalia.com" title="ASPItalia.com" target="_blank"&gt;ASPItalia.com&lt;/a&gt; il mio articolo sulla creazione di list definition in SharePoint 2007 (valido sia per WSS 3.0 che per MOSS 2007 chiaramente).
&lt;br /&gt;Al suo interno è possibile vedere come utilizzare i Visual Studio tools for SharePoint per la creazione del modello di lista o come crearlo a mano a partire dalle strutture xml presenti sul file system. Altra possibilità era quella di utilizzare WSPBuilder e le sue estensioni per Visual Studio, ma i concetti di base e le regole sintattiche relative alle list definition rimanevano comunque le stesse.
&lt;br /&gt;Quando si parla di list definition è naturale toccare anche i concetti di &lt;a href="http://www.aspitalia.com/script/990/Definizione-Site-Columns-Tramite-Feature-SharePoint.aspx" title="Creazione di site column tramite una feature" target="_blank"&gt;site columns&lt;/a&gt; e &lt;a href="http://www.aspitalia.com/script/991/Creazione-Content-Type-Tramite-Feature-SharePoint.aspx" title="Creazione di un content type" target="_blank"&gt;content type&lt;/a&gt;, argomenti che abbiamo già visto in un paio di script precedenti e che vengono richiamati all'interno dell'articolo stesso.
&lt;br /&gt;
&lt;br /&gt;Tutti questi assieme, saranno parte della prima delle mie due sessioni alla &lt;a href="http://www.sharepointconference.it" title="Microsoft SharePoint Conference 2010" target="_blank"&gt;SharePoint Conference 2010&lt;/a&gt;, applicati però a SharePoint 2010 e Visual Studio 2010. Se siete interessati, vi consiglio di nuovo di &lt;a href="http://www.sharepointconference.it/registration.aspx" title="SharePoint Conference 2010" target="_blank"&gt;iscrivervi&lt;/a&gt; !
&lt;br /&gt;
&lt;br /&gt;Ecco il link diretto all'articolo:
&lt;br /&gt;&lt;a href="http://www.aspitalia.com/articoli/sharepoint/list-definition.aspx" title="Creazione di list definition SharePoint" target="_blank"&gt;http://www.aspitalia.com/articoli/sharepoint/list-definition.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/List definition.aspx" title="TAG: List definition"&gt;List definition&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content type.aspx" title="TAG: Content type"&gt;Content type&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Site columns.aspx" title="TAG: Site columns"&gt;Site columns&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2007ListDefinitionCreation.aspx" /><issued>2010-1-26T9:29:39+01:00</issued><modified>2010-1-26T9:29:39+01:00</modified></entry><entry><title>SharePoint 2010 Beta 2 VHD</title><id>/Blog/SharePoint2010Beta2VHDAvailableForDownload.aspx</id><created>2010-1-25T18:58:50+01:00</created><content type="text/html" mode="escaped">Se siete partner SDPS, è disponibile via ftp un VHD con installata la Beta 2 di SharePoint 2010.
&lt;br /&gt;Visitate il sito dei partner: &lt;a href="https://www.partnersdps.com/public/pages/default.aspx" title="SDPS partner program"&gt;https://www.partnersdps.com/public/pages/default.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010Beta2VHDAvailableForDownload.aspx" /><issued>2010-1-25T18:58:50+01:00</issued><modified>2010-1-25T18:58:50+01:00</modified></entry><entry><title>Mandare mail tramite l'SMTP di SharePoint</title><id>/Blog/HowToSendMailsWithSharePointSMTP.aspx</id><created>2010-1-23T13:45:9+01:00</created><content type="text/html" mode="escaped">Succede spesso di dover spedire della mail da componenti SharePoint come web part, custom page o altro.. Il modello ad oggetti ci offre il metodo SendMail della classe SPUtility, con ben quattro overload diversi.
&lt;br /&gt;Il problema è che a volte quel metodo non basta per i nostri scopi, perchè magari abbiamo la necessità di inserire degli indirizzi e-mail nei campi CC e BCC, inserire allegati o comunque effettuate una di quelle attività che normalmente ci vengono offerte dalla classe MailMessage.
&lt;br /&gt;
&lt;br /&gt;Sempre tramite modello ad oggetti però, è possibile recuperare l'indirizzo del server SMTP configurato dalla Central Administration di SharePoint ed utilizzarlo per spedire i nostri messaggi e-mail.
&lt;br /&gt;Vediamo come:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;MailMessage message = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; MailMessage();
&lt;br /&gt;message.From = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; MailAddress(&lt;span style="color: #A31515"&gt;"info@peppedotnet.it"&lt;/span&gt;);
&lt;br /&gt;message.To.Add(&lt;span style="color: #A31515"&gt;"info@peppedotnet.it"&lt;/span&gt;);
&lt;br /&gt;message.CC.Add(&lt;span style="color: #A31515"&gt;"info@peppedotnet.it"&lt;/span&gt;);
&lt;br /&gt;message.Bcc.Add(&lt;span style="color: #A31515"&gt;"info@peppedotnet.it"&lt;/span&gt;);
&lt;br /&gt;message.Subject = &lt;span style="color: #A31515"&gt;"Prova invio da SharePoint"&lt;/span&gt;;
&lt;br /&gt;message.Body = &lt;span style="color: #A31515"&gt;"Corpo del messaggio ...."&lt;/span&gt;;
&lt;br /&gt;message.IsBodyHtml = &lt;span style="color: #0000FF"&gt;true&lt;/span&gt;;               
&lt;br /&gt;
&lt;br /&gt;SPWeb web = SPContext.Current.Web;
&lt;br /&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; smtpUrl = web.Site.WebApplication.OutboundMailServiceInstance.Server.Address;
&lt;br /&gt;
&lt;br /&gt;SmtpClient smtp = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SmtpClient(smtpUrl);
&lt;br /&gt;smtp.Send(message);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Dovete solamente fare attenzione ad utilizzare questo codice dopo che il servizio di Outcoming Mail è stato correttamente configurato dalla Central Administration della vostra farm SharePoint, altrimenti il codice utile a recuperare l'indirizzo del server SMTP tornerà un'eccezione di tipo NullReferenceException.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SMTP.aspx" title="TAG: SMTP"&gt;SMTP&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Central Administration.aspx" title="TAG: Central Administration"&gt;Central Administration&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToSendMailsWithSharePointSMTP.aspx" /><issued>2010-1-23T13:45:9+01:00</issued><modified>2010-1-23T13:45:9+01:00</modified></entry><entry><title>SharePoint OnLine !</title><id>/Blog/SharePointOnLine.aspx</id><created>2010-1-20T22:21:26+01:00</created><content type="text/html" mode="escaped">Dal blog di &lt;a href="http://blogs.msdn.com/arpans/archive/2010/01/12/sharepoint-online-in-the-2010-wave.aspx" title="Arpan Shah: SharePoint OnLine" target="_blank"&gt;Arpan Shah&lt;/a&gt; si legge oggi del nuovo servizio Microsoft per le aziende: SharePoint OnLine !
&lt;br /&gt;
&lt;br /&gt;Il servizio, attualmente basato sulla versione 2007 di SharePoint, è disponibile a pagamento per tutte le aziende e non che hanno la necessità di utilizzare la piattaforma di collaborazione Microsoft e non hanno effettive possibilità in termini di strutture.
&lt;br /&gt;Durante l'utilizzo del servizio, è possibile utilizzare i normali strumenti di sviluppo SharePoint per estendere la propria installazione, partendo da SharePoint Designer e arrivando fino al consumo di web services da applicazioni esterne.
&lt;br /&gt;Non ho capito bene quali siano i prezzi, ma dal sito dicono "a partire da 5 dollari al mese per utente"...
&lt;br /&gt;E' anche prevista la migrazione a SharePoint 2010 nella seconda metà del 2010, così da utilizzare il prodotto in versione RTM.
&lt;br /&gt;
&lt;br /&gt;Per ulteriori informazioni, visitate direttamente il sito:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/online/sharepoint-online.mspx" title="SharePoint OnLine" target="_blank"&gt;http://www.microsoft.com/online/sharepoint-online.mspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint OnLine.aspx" title="TAG: SharePoint OnLine"&gt;SharePoint OnLine&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointOnLine.aspx" /><issued>2010-1-20T22:21:26+01:00</issued><modified>2010-1-20T22:21:26+01:00</modified></entry><entry><title>On-line l'agenda della Microsoft SharePoint &amp; Office Conference 2010</title><id>/Blog/OnLineAgendaItalianMicrosoftSharePointOfficeConference2010.aspx</id><created>2010-1-18T14:2:4+01:00</created><content type="text/html" mode="escaped">Come già segnalato da &lt;a href="http://blogs.devleap.com/paolo/archive/2010/01/18/microsoft-sharepoint-amp-office-conference-2010-agenda-on-line.aspx" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; e &lt;a href="http://blogs.devleap.com/igor/archive/2010/01/18/online-l-agenda-della-microsoft-sharepoint-amp-office-conference-2010.aspx" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, da oggi è on-line l'&lt;a href="http://www.sharepointconference.it/agenda.aspx" title="Agenda Microsoft SharePoint Office Conference 2010" target="_blank"&gt;agenda&lt;/a&gt; della Microsoft Sharepoint &amp; Office Conference 2010 che si terrà il 9, 10 e 11 Marzo qui a Milano.
&lt;br /&gt;Ecco qua l'indirizzo diretto: &lt;a href="http://www.sharepointconference.it/agenda.aspx" title="Agenda Microsoft SharePoint Office Conference 2010" target="_blank"&gt;http://www.sharepointconference.it/agenda.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Come potete vedere, l'agenda è veramente ricca, piena di contenuti e ben fatta. Le 4 track sono equamente divise così da permettervi la scelta degli argomenti da voi preferiti.
&lt;br /&gt;Inoltre, sono presenti anche diversi speaker internazionali tra i quali spiccano sicuramente i nomi di &lt;a href="http://www.sharepointconference.it/speakers.aspx#Jan_Tielens" title="Jan Tielens" target="_blank"&gt;Jan Tielens&lt;/a&gt; e &lt;a href="http://www.sharepointconference.it/speakers.aspx#Mike_Fitzmaurice" title="Mike Fitzmaurice" target="_blank"&gt;Mike Fitzmaurice&lt;/a&gt;
&lt;br /&gt;Le mie sessioni sono entrambe martedì 9 marzo, una alle 11.15 e l'altra alle 15.45
&lt;br /&gt;
&lt;br /&gt;Vi riporto il consiglio di entrambi: correte ad iscrivervi, così da poter usufruire degli sconti di registrazione !
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/" title="Microsoft SharePoint Office Conference 2010" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/Images/728x90_spoc2010_201209_it.jpg" alt="Microsoft SharePoint Office Conference 2010" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OnLineAgendaItalianMicrosoftSharePointOfficeConference2010.aspx" /><issued>2010-1-18T14:2:4+01:00</issued><modified>2010-1-18T14:2:4+01:00</modified></entry><entry><title>Confrontare le DLL di MOSS 2007 e SharePoint 2010</title><id>/Blog/DLLDifferencesBetweenMOSS2007AndSharePoint2010.aspx</id><created>2010-1-7T19:58:10+01:00</created><content type="text/html" mode="escaped">Grazie a &lt;a href="http://blogs.aspitalia.com/ricciolo/" title="Cristian Civera" target="_blank"&gt;Cristian&lt;/a&gt;, ora è disponibile su &lt;a href="http://www.aspitalia.com" title="ASPItalia.com" target="_blank"&gt;ASPItalia.com&lt;/a&gt; il confronto tra i namespace, le classi e i membri di varie DLL di MOSS 2007 e SharePoint 2010.
&lt;br /&gt;Il tool, sviluppato in Silverlight, è disponibile a questo indirizzo:
&lt;br /&gt;&lt;a href="http://lab.ricciolo.aspitalia.com/metadatadiffviewer/metadatadiffviewer.html" title="Confrontare le DLL di MOSS 2007 e SharePoint 2010" target="_blank"&gt;http://lab.ricciolo.aspitalia.com/metadatadiffviewer/metadatadiffviewer.html&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;In attesa dalla release ufficiale e della SharePoint Conference, è sicuramente molto utile fare un giro su questo strumento. Ve lo consiglio.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/DLLDifferencesBetweenMOSS2007AndSharePoint2010.aspx" /><issued>2010-1-7T19:58:10+01:00</issued><modified>2010-1-7T19:58:10+01:00</modified></entry><entry><title>Le mie sessioni alla Microsoft SharePoint Conference 2010</title><id>/Blog/MySessions@MicrosoftSharePointConference2010.aspx</id><created>2009-12-29T18:55:33+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.sharepointconference.it/images/logo.png" alt="Microsoft SharePoint Office Conference 2010" style="float: right; margin: 5px; padding: 5px; border: solid 1px #C0C0C0" /&gt;Sono uscite la maggior-parte delle sessioni che potete seguire alla &lt;a href="http://www.sharepointconference.it/" target="_blank" title="Microsoft SharePoint Office Conference 2010"&gt;Microsoft SharePoint &amp; Office Conference 2010&lt;/a&gt; che si terrà a marzo qui a Milano il 9, 10 e 11.
&lt;br /&gt;Io ne ho ben due.. su argomenti che tra loro vanno parecchio d'accordo.
&lt;br /&gt;Ve le riporto:
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;:: Aggiornare soluzioni MOSS2007 a SharePoint 2010&lt;/b&gt;
&lt;br /&gt;Si tratta di una sessione rivolta a chi già sviluppa o ha sviluppato soluzioni con Microsoft Office SharePoint 2007 (MOSS2007) e le Visual Studio Extensions for WSS 1.x (VSeWSS 1.x). In questa sessione vedremo come preservare gli investimenti fatti e come sviluppare su MOSS2007 per poter correttamente migrare poi il codice a SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;Scaletta:&lt;ul&gt;&lt;li&gt;Feature e Solution&lt;/li&gt;&lt;li&gt;WSP&lt;/li&gt;&lt;li&gt;Visual Studio 2010 Tools for SharePoint&lt;/li&gt;&lt;li&gt;Upgrade da VSeWSS 1.x&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;:: Data provisioning con SharePoint 2010 e Visual Studio 2010&lt;/b&gt;
&lt;br /&gt;In questa sessione vedremo come sviluppare soluzione di provisioning per SharePoint 2010, creando da codice, tramite Visual Studio 2010, le strutture dati essenziali per un qualsiasi progetto SharePoint da rivendere. In particolare vedremo come creare Content Type personalizzati, List Definition basate su quei Content Type, pagine personalizzate che sfruttino i dati presenti nelle liste definite ed eventualmente Site Definition per assemblare il tutto in un modello di sito creabile N volte.
&lt;br /&gt;
&lt;br /&gt;Scaletta:&lt;ul&gt;&lt;li&gt;Content Type&lt;/li&gt;&lt;li&gt;List Definition&lt;/li&gt;&lt;li&gt;Custom Page&lt;/li&gt;&lt;li&gt;Site Definition&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;Se volete vedere, nel dettaglio, tutte le altre sessioni le trovate a questo indirizzo: &lt;a href="http://www.sharepointconference.it/sessions.aspx" target="_blank" title="Elenco sessioni alla Microsoft Office SharePoint Conference 2010"&gt;http://www.sharepointconference.it/sessions.aspx&lt;/a&gt;
&lt;br /&gt;E' già scaduta la prima trance di registrazione a prezzo scontato.. il prezzo attuale per i tre giorni è di 635 euro. Affrettatevi !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;][&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/MySessions@MicrosoftSharePointConference2010.aspx" /><issued>2009-12-29T18:55:33+01:00</issued><modified>2009-12-29T18:55:33+01:00</modified></entry><entry><title>Errore: &quot;Failed to create sample data&quot; durante l'installazione di SharePoint 2010</title><id>/Blog/ErrorFailedToCreateSampleDataDuringSharePoint2010Installation.aspx</id><created>2009-12-25T23:20:10+01:00</created><content type="text/html" mode="escaped">Installando la beta di SharePoint 2010, mi sono scontrato tutte le volte con questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Failed to create sample Data.
&lt;br /&gt;
&lt;br /&gt;An exception of type Microsoft.Office.Server.UserProfiles.UserProfileException was thrown. Addictional exception information: Unrecognized attribute 'allowInsecureTransport'. Note that attribute names are case-sensitive (C:\Program Files\Common Files\Microsoft Shared\Web Server Extentions\14\WebClients\Profile\client.config line 56)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;visibile anche in figura:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/failedToCreateSampleData.jpg" alt="Error: Failed to create sample data" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per risolvere il problema, basta solamente aprire il file client.config specificato nelle informazioni dettagliate dell'errore e togliere tutte le occorrenze dell'attributo "allowInsecureTransport". Fatto questo, è necessario far ripartire a mano il Configuration Wizard di SharePoint 2010.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorFailedToCreateSampleDataDuringSharePoint2010Installation.aspx" /><issued>2009-12-25T23:20:10+01:00</issued><modified>2009-12-25T23:20:10+01:00</modified></entry><entry><title>Speaker @ Microsoft SharePoint and Office Conference 2010</title><id>/Blog/Speaker@MicrosoftSharePointOfficeConference2010.aspx</id><created>2009-12-24T17:37:21+01:00</created><content type="text/html" mode="escaped">&lt;img src="http://www.sharepointconference.it/SpeakerImage.axd?image=http://www.sharepointconference.it/SpeakersPhotos/GiuseppeMarchi.jpg&amp;w=120" alt="Speaker @ SharePoint Conference" style="float: right" /&gt;Qua il natale è arrivato con due giorni d'anticipo..
&lt;br /&gt;Ieri &lt;a href="http://blogs.devleap.com/paolo/" title="Paolo Pialorsi" target="_blank"&gt;Paolo&lt;/a&gt; e &lt;a href="http://www.macori.it/" title="Igor Macori" target="_blank"&gt;Igor&lt;/a&gt;, mi hanno confermato la mia presenza come speaker alla Microsoft SharePoint &amp; Office Conference 2010 !
&lt;br /&gt;
&lt;br /&gt;Eccomi qua:
&lt;br /&gt;&lt;a href="http://www.sharepointconference.it/speakers.aspx#Giuseppe Marchi" title="Giuseppe Marchi" target="_blank"&gt;http://www.sharepointconference.it/speakers.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Dire che son contento.. è poco !!
&lt;br /&gt;A breve, vi dirò anche su cosa verteranno le mie sessioni..
&lt;br /&gt;Intanto, auguro a tutti un buon natale !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/Speaker@MicrosoftSharePointOfficeConference2010.aspx" /><issued>2009-12-24T17:37:21+01:00</issued><modified>2009-12-24T17:37:21+01:00</modified></entry><entry><title>Iscrizioni aperte per la Microsoft SharePoint &amp; Office Conference 2010</title><id>/Blog/IscrizioniApertePerLaMicrosoftSharePointConference2010.aspx</id><created>2009-12-14T19:6:53+01:00</created><content type="text/html" mode="escaped">Dal blog di &lt;a href="http://blogs.devleap.com/igor/archive/2009/12/14/il-sito-della-microsoft-sharepoint-amp-office-conference-2010-232-online.aspx" title="Igor Macori annuncia le iscrizioni alla SharePoint Conference"&gt;Igor&lt;/a&gt;, la notizia dell'apertura delle iscrizioni per la Microsoft SharePoint &amp; Office Conference 2010 che avrà luogo il 9-10-11 marzo 2010 presso il centro congressi Milanofiori ad Assago (MI).
&lt;br /&gt;Questo il sito di riferimento: &lt;a href="http://www.sharepointconference.it/default.aspx" title="Sito della Microsoft SharePoint Conference 2010"&gt;http://www.sharepointconference.it/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Da giovedì 17 dicembre, a partire dalle ore 10 in punto, avete la possibilità di iscrivervi.
&lt;br /&gt;Il mio consiglio è di affrettarsi, perchè prima si prenota e più basso è il prezzo !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;][&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Conference.aspx" title="TAG: SharePoint Conference"&gt;SharePoint Conference&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/IscrizioniApertePerLaMicrosoftSharePointConference2010.aspx" /><issued>2009-12-14T19:6:53+01:00</issued><modified>2009-12-14T19:6:53+01:00</modified></entry><entry><title>L'opzione di menu &quot;SharePoint Mapped folder&quot; di Visual Studio 2010</title><id>/Blog/SharePoint2010MappedFolderMenuOnVisualStudio2010.aspx</id><created>2009-12-12T18:47:2+01:00</created><content type="text/html" mode="escaped">Riguardo le principali novità per sviluppatori SharePoint 2010, ne abbiamo parlato già nel &lt;a href="http://www.peppedotnet.it/Articoli/VisualStudio2010FeaturesForSharePoint2010Dev.aspx" title="Le novità di Visual Studio 2010 Beta 2 per SharePoint 2010"&gt;relativo articolo&lt;/a&gt;.
&lt;br /&gt;Una piccola cosa che ho tralasciato è la presenza di nuove voci di menu, all'interno del menu "Add", utilizzato solitamente per l'inserimento di nuovi elementi all'interno della soluzione. Queste, permettono allo sviluppatore di mappare la directory "IMAGES", la directory "LAYOUTS" o un'altra delle directory presenti sotto il percorso:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;C:\program files\common files\microsoft shared\web server extensions\14\
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;all'interno della struttura del proprio package di progetto. 
&lt;br /&gt;
&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td valign="top" style="width: 50%; padding: 15px;"&gt;&lt;a href="http://www.peppedotnet.it/images/2010/SharePointMappedFolder.jpg" title="Visual Studio 2010 - SharePoint mapped folder menu" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/2010/SharePointMappedFolder_s.jpg" alt="Visual Studio 2010 - SharePoint mapped folder menu" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" style="width: 50%; padding: 15px;"&gt;&lt;a href="http://www.peppedotnet.it/images/2010/SharePointMappedFolder2.jpg" title="Visual Studio 2010 - SharePoint mapped folder menu" target="_blank"&gt;&lt;img src="http://www.peppedotnet.it/images/2010/SharePointMappedFolder2_s.jpg" alt="Visual Studio 2010 - SharePoint mapped folder menu" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;Così facendo, tutti i file posti in tali cartelle mappate, verrano automaticamente inseriti all'interno della soluzione ed installati sul server SharePoint 2010, nei percorsi definiti dai relativi mapping. In modo tale da poter essere disponibili per eventuali componenti personalizzati (come list o site definition, web part, ecc...) o vere e proprie applicazioni SharePoint.
&lt;br /&gt;La medesima funzionalità appena descritta, non era presente nei tools per Visual Studio legati alla versione 2007 di SharePoint, mentre era disponibile una volta installati uno degli add-in tra WSPBuilder o gli Smart Templates.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&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/SharePoint2010MappedFolderMenuOnVisualStudio2010.aspx" /><issued>2009-12-12T18:47:2+01:00</issued><modified>2009-12-12T18:47:2+01:00</modified></entry><entry><title>Finalmente... </title><id>/Blog/SharePoint2010BackToSiteLinkWhenDeleteASite.aspx</id><created>2009-12-8T19:34:54+01:00</created><content type="text/html" mode="escaped">... hanno deciso di regalarci quel bel link per ritornare al sito padre, una volta cancellato il sito SharePoint corrente !
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/2010/WebsiteDeleted.jpg" alt="Messaggio di avvenuta cancellazione di un sito SharePoint con il link per ritornare al sito padre !!" /&gt;
&lt;br /&gt;
&lt;br /&gt;ed è solo una delle tante piccole gioie che ci da questa beta di SharePoint 2010.. ;)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010BackToSiteLinkWhenDeleteASite.aspx" /><issued>2009-12-8T19:34:54+01:00</issued><modified>2009-12-8T19:34:54+01:00</modified></entry><entry><title>Bug nell'utilizzo dell'activity OnTaskCreated all'interno di workflow SharePoint</title><id>/Blog/OnTaskCreatedNotFiredOnSharePointWorkflow.aspx</id><created>2009-12-5T16:34:37+01:00</created><content type="text/html" mode="escaped">Presso un cliente, dopo aver installato l'aggiornamento &lt;a href="http://blogs.msdn.com/sharepoint/archive/2008/07/15/announcing-availability-of-infrastructure-updates.aspx" title="Infrastructure Update for SharePoint"&gt;"Infrastructure Update for SharePoint"&lt;/a&gt;, un workflow a stati sviluppato ormai un anno fa e perfettamente funzionante, ha iniziato a dare qualche problema.
&lt;br /&gt;Dopo un pò di monitoraggio dell'applicazione mi accorgo di un comportamento veramente molto strano. L'unica attività di tipo "OnTaskCreated" che avevo utilizzato per la modifica e il completamento di un task in maniera automatica, la maggior parte delle volte non veniva neanche sollavata, altre volte si comportava normalmente mentre altre ancora veniva scatenata dopo parecchi minuti dalla creazione del relativo task. La cosa strana è che questi comportamenti avvenivano in modo del tutto &lt;span style="text-decoration: underline"&gt;indeterministico&lt;/span&gt;.
&lt;br /&gt;Inizio le solite ricerche su google e tra i vari forum e newsgroup vedo che molti si lamentano del mio stesso problema. Dopo qualche lettura qua e la, arrivo a questo articolo della KB Microsoft:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/970548" title="After you start a workflow on a server that is running SharePoint Services 3.0, you receive an error message that states an error has occurred in the workflow"&gt;http://support.microsoft.com/kb/970548&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Penso: "per fortuna.. ci sarà sicuramente un qualche hotfix da installare o comunque qualcosa che mi risolve il problema". Fin quando non vedo la risoluzione proposta....
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; margin-left: 10px; border: solid 1px #C0C0C0; padding: 3px"&gt;Method 1: In most of situations, the OnTaskCreated events are not needed. You can replace the OnTaskCreated event with either : 
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A delay activity ( for example, 5 seconds).&lt;/li&gt;&lt;li&gt;You might want to perform your code actions in a code-activity placed after the delay activity.&lt;/li&gt;&lt;/ul&gt;Method 2: An event receiver on the task list. You'll code the event receiver to perform the same actions as the OnTaskCreated. 
&lt;br /&gt;If you choose to insert a delay activity, you will need to verify the steps in the following article have been taken:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Praticamente, a sentir loro, l'attività di tipo OnTaskCreated NON SERVE... e la possiamo sostituire tranquillamente con una delay activity o con un event handler. A saperlo prima, l'avrei sicuramente fatto...
&lt;br /&gt;Speravo facessero uscire un aggiornamento o una correzione, ma purtroppo, ho dovuto seguire anche io uno di quei metodi per rimettere in piedi il mio workflow.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/tags/SharePoint.aspx" title="Tag: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/tags/Workflow.aspx" title="Tag: Workflow"&gt;Workflow&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/tags/OnStaskCreated.aspx" title="Tag: OnTaskCreated"&gt;OnTaskCreated&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/OnTaskCreatedNotFiredOnSharePointWorkflow.aspx" /><issued>2009-12-5T16:34:37+01:00</issued><modified>2009-12-5T16:34:37+01:00</modified></entry><entry><title>Silverlight creation experience in SharePoint 2010</title><id>/Blog/SilverlightCreationExperienceInSharePoint2010.aspx</id><created>2009-11-30T10:59:25+01:00</created><content type="text/html" mode="escaped">All'interno di SharePoint 2010, Silverlight è totalmente integrato e presente di default attraverso un paio di web part di base (presenti sia nella versione Server che in SharePoint Foundation), una web part per la visualizzazione grafica dell'organizzazione della propria azienda (presente solo in SharePoint Server 2010) e un meccanismo per la scelta del template con cui creare le nuove liste all'interno dei vari siti.
&lt;br /&gt;Quest'ultima risulta davvero di notevole impatto, in quanto offre una nuova user interface veramente ricca, per la selezione delle varie tipologie di liste disponibili. Come al solito Microsoft, ha scelto il nome più sborone che poteva trovare per tale interfaccia: "the creation experience".
&lt;br /&gt;Quindi, in una normale installazione di SharePont 2010, scegliendo l'opzione "Site Actions &gt; More Options ..." si viene portati alla pagina di selezione del tipo di lista da creare.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/2010/silverlightCreationExperience0.jpg" title=""&gt;&lt;img src="http://www.peppedotnet.it/images/2010/silverlightCreationExperience0_s.jpg" alt="" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Se il client con cui accede l'utente non ha installato Silverlight 3.0 (o 4.0), questa pagina risulterà di aspetto e funzionalità medesime a quanto già avevamo nella versione 2007 di SharePoint. Da notare è il fatto che il sistema si accorge della mancanza di Silverlight nel browser dell'utente e gli propone di installarlo attraverso un alert posto in alto a sinistra della pagina.
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/2010/silverlightCreationExperience1.jpg" title=""&gt;&lt;img src="http://www.peppedotnet.it/images/2010/silverlightCreationExperience1_s.jpg" alt="" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Una volta installato, al posto della normale pagina di selezione del template di lista, SharePoint renderizzerà una finestra modale che conterrà il nuovo controllo Silverlight utile a fornire all'utente finale una scelta del template di lista molto più immediata e gradevole.
&lt;br /&gt;Il controllo è visibile in questa figura, ma dal vivo vi assicuro che è veramente bello !
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.peppedotnet.it/images/2010/silverlightCreationExperience2.jpg" title=""&gt;&lt;img src="http://www.peppedotnet.it/images/2010/silverlightCreationExperience2_s.jpg" alt="" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Questa è una delle integrazioni già disponibili tra SharePoint 2010 e Silverlight. A breve vedremo anche tutto il resto non preoccupatevi..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Server 2010.aspx" title="TAG: SharePoint Server 2010"&gt;SharePoint Server 2010&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/SilverlightCreationExperienceInSharePoint2010.aspx" /><issued>2009-11-30T10:59:25+01:00</issued><modified>2009-11-30T10:59:25+01:00</modified></entry><entry><title>SharePoint 2010 Beta is here !</title><id>/Blog/SharePoint2010AvailableOnMsdn.aspx</id><created>2009-11-16T22:8:23+01:00</created><content type="text/html" mode="escaped">Ci siamo !!
&lt;br /&gt;Da stasera, tramite l'MSDN Subscription, sono disponibili le versioni beta di SharePoint Foundation 2010 e SharePoint Server 2010 !
&lt;br /&gt;Vedere per credere..
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/sps2010download.jpg" alt="SharePoint 2010 downloads on MSDN" /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Server 2010.aspx" title="TAG: SharePoint Server 2010"&gt;SharePoint Server 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010AvailableOnMsdn.aspx" /><issued>2009-11-16T22:8:23+01:00</issued><modified>2009-11-16T22:8:23+01:00</modified></entry><entry><title>Aggiornare il contenuto di una web part di tipo ContentEditorWebPart</title><id>/Blog/HowToUpdateContentEditorWebPartContent.aspx</id><created>2009-11-15T13:20:50+01:00</created><content type="text/html" mode="escaped">La web part &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.contenteditorwebpart.aspx" title="Content Editor Web Part" target="_blank"&gt;"Content Editor Web Part"&lt;/a&gt;, disponibile sia su WSS 3.0 che (ovviamente) su MOSS 2007, viene spesso utilizzata dall'utente finale all'interno dei propri siti SharePoint in quanto di facile utilizzo anche per chi non ha alcuna confidenza con concetti di layout grafico ed impaginazione dei contenuti.
&lt;br /&gt;Tramite il modello ad oggetti esposto, è possibile modificarne il contenuto in maniera abbastanza facile, potendo inoltre decidere se passare del semplice testo o se pre-formattarlo in formato HTML.
&lt;br /&gt;Vediamo come.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;using&lt;/span&gt; (SPLimitedWebPartManager mgr = web.GetFile(&lt;span style="color: #A31515"&gt;"default.aspx"&lt;/span&gt;).GetLimitedWebPartManager(PersonalizationScope.Shared))
&lt;br /&gt;{
&lt;br /&gt;  &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (mgr != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;  {
&lt;br /&gt;      &lt;span style="color: #0000FF"&gt;foreach&lt;/span&gt; (Microsoft.SharePoint.WebPartPages.WebPart part &lt;span style="color: #0000FF"&gt;in&lt;/span&gt; mgr.WebParts)
&lt;br /&gt;      {
&lt;br /&gt;         ContentEditorWebPart contentEditor = part &lt;span style="color: #0000FF"&gt;as&lt;/span&gt; ContentEditorWebPart;
&lt;br /&gt;         &lt;span style="color: #0000FF"&gt;if&lt;/span&gt; (contentEditor != &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;         {
&lt;br /&gt;            XmlDocument xmlDoc = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XmlDocument();
&lt;br /&gt;            XmlElement xmlElement = xmlDoc.CreateElement(&lt;span style="color: #A31515"&gt;"HtmlContent"&lt;/span&gt;);
&lt;br /&gt;            xmlElement.InnerText = &lt;span style="color: #A31515"&gt;"&lt;DIV&gt;&lt;H2&gt;Il mio contenuto !&lt;/H2&gt;&lt;/DIV&gt;"&lt;/span&gt;;
&lt;br /&gt;            contentEditor.Content = xmlElement;                                
&lt;br /&gt;            mgr.SaveChanges(contentEditor);
&lt;br /&gt;         }
&lt;br /&gt;      }
&lt;br /&gt;   }
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questo codice può essere utile sia all'interno di una web part che all'interno di altri componenti SharePoint, che necessitano l'aggiunta della referenza alla libreria Microsoft.SharePoint.dll e ai namespace Micrsofot.SharePoint e Microsoft.SharePoint.WebPartPages.
&lt;br /&gt;Spero sia utile a qualcuno.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/ContentEditorWebPart.aspx" title="TAG: ContentEditorWebPart"&gt;ContentEditorWebPart&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToUpdateContentEditorWebPartContent.aspx" /><issued>2009-11-15T13:20:50+01:00</issued><modified>2009-11-15T13:20:50+01:00</modified></entry><entry><title>Come spostare i database di contenuto di SharePoint da una farm all'altra</title><id>/Blog/HowToDetachAndAttachSharePointContentDatabasesFromOneFarmToAnother.aspx</id><created>2009-11-3T12:20:32+01:00</created><content type="text/html" mode="escaped">Spostare i database di contenuto di Sharepoint 2007 è un'attività che è stata notevolmente semplificata rispetto alla versione precedente del prodotto, in quanto è possibile fare un detach/attach oppure un backup/restore del database tramite SQL Server Management Studio, per poi effettuare alcune operazioni eseguite a riga di comando tramite l'utilizzo dell'utility stsadm.
&lt;br /&gt;Vediamo in dettaglio tutti i passi da seguire:
&lt;br /&gt;
&lt;br /&gt;1- lanciare il comando stsadm specificando l'operazione &lt;a href="http://technet.microsoft.com/en-us/library/cc262122.aspx" title="Preparetomove: Stsadm operation (Office SharePoint Server)" target="_blank"&gt;"preparetomove"&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o preparetomove -contentdb SERVER:DBNAME - site http://mioindirizzomossVECCHIAFARM
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questa operazione preliminare serve a preparare il database di cotenuto ad essere spostato, stoppando temporaneamente il job si sincornizzazione dei profili e del memberhsip sulla relativa web application.
&lt;br /&gt;
&lt;br /&gt;2- Effettuare un backup del database di contenuto tramite SQL Server Management Studio
&lt;br /&gt;
&lt;br /&gt;3- Effettuare il detach del database di contenuto dalla relativa web application, lanciando il comando stsadm e specificando l'operazione &lt;a href="http://technet.microsoft.com/en-us/library/cc262449.aspx" title="Deletecontentdb: Stsadm operation (Office SharePoint Server)
&lt;br /&gt;" target="_blank"&gt;"deletecontentdb"&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o deletecontentdb -url http://mioindirizzomossVECCHIAFARM -databaseserver SERVER -databasename DBNAME
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;4- Restorare il database SQL nella nuova farm tramite SQL Server Management Studio
&lt;br /&gt;
&lt;br /&gt;5- Creare una nuova web application vuota nella nuova farm, specificando un database temporaneo (DBNAME_TEMP)
&lt;br /&gt;
&lt;br /&gt;6- Effettuare il detach del database di contenuto temporaneo appena creato, tramite il comando "deletecontentdb" visto precedentemente, ma riferito alla nuova farm
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o deletecontentdb -url http://mioindirizzomossNUOVAFARM -databaseserver NEWSERVER -databasename DBNAME_TEMP
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;7- Effettuare l'attach del database di contenuto sulla nuova web application propria della nuova farm SharePoint, lanciando il comando stsadm e specificando l'operazione &lt;a href="http://technet.microsoft.com/en-us/library/cc263422.aspx" title="Addcontentdb: Stsadm operation (Office SharePoint Server)" target="_blank"&gt;"addcontentdb"&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o addcontentdb -url http://mioindirizzomossNUOVAFARM -databaseserver NEWSERVER -databasename DBNAME
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;Se avete seguito correttamente tutti i passi, vi ritroverete i medesimi contenuti presenti nella vecchia farm all'interno della nuova web application propria di una nuova farm SharePoint.
&lt;br /&gt;Non è così complicato dai..
&lt;br /&gt;
&lt;br /&gt;L'unica cosa su cui fare attenzione, è l'operazione preliminare "preparetomove". Se questa, infatti, non viene lanciata, una volta attaccato il database di contenuto nella nuova farm vi ritroverete all'interno dell'event viewer dei messaggi di errore, ad intervalli di tempo regolare, del tutto simili a questo:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;Failure trying to synch web application [Web_App_GUID], ContentDB [Content_DB_GUID]  Exception message was A duplicate site ID [SiteCollection_GUID]([SiteColleciton_URL]) was found. This might be caused by restoring a content database from one server farm into a different server farm without first removing the original database and then running stsadm -o preparetomove. If this is the cause, the stsadm -o preparetomove command can be used with the -OldContentDB command line option to resolve this issue.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;L'errore viene scatenato dal meccanismo di sincronizzazione dei profili che si trova due identificativi per due database di contenuto diversi, quello nuovo e quello temporaneo che abbiamo precedentemente cancellato.
&lt;br /&gt;Per risolvere questo problema, evitando di preoccuparci riguardo quanto ci dice il testo stesso dell'errore, è necessario lanciare il seguente comando:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;stsadm -o sync -deleteolddatabases 0
&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Tramite l'operazione &lt;a href="http://technet.microsoft.com/en-us/library/cc263196.aspx" title="Sync: Stsadm operation (Office SharePoint Server)" target="_blank"&gt;"sync"&lt;/a&gt; dell'utility stsadm è possibile ripulire tutti i record della tabella di sincronizzazione siti/profili che corrispondono a database che non sono più legati a nessuna web application (chiaramente senza cancellarli fisicamente dal file system).
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS 2007.aspx" title="TAG: MOSS 2007"&gt;MOSS 2007&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/stsadm.aspx" title="TAG: stsadm"&gt;stsadm&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToDetachAndAttachSharePointContentDatabasesFromOneFarmToAnother.aspx" /><issued>2009-11-3T12:20:32+01:00</issued><modified>2009-11-3T12:20:32+01:00</modified></entry><entry><title>Errore sul cambiamento dell'utente all'interno del Task Scheduler di Windows Server 2008</title><id>/Blog/ErrorOnChangeRunningUserInWindowsServer2008TaskScheduler.aspx</id><created>2009-11-1T17:17:44+01:00</created><content type="text/html" mode="escaped">Il task scheduler di Windows Server 2008 ha un bug noto che si verifica al cambiamento dell'utente con cui il task dovrà essere eseguito. Errore che viene segnalato all'utente una volta che cerca di chiudere la finestra di proprietà del task schedulato, dopo aver cambiato l'utenza in questione.
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/taskScheduler.jpg" alt="Windows Server 2008 Task Scheduler" /&gt;
&lt;br /&gt;
&lt;br /&gt;L'errore stmpato a video è il seguente:
&lt;br /&gt;&lt;div style="color: red; font-style:italic; margin-left: 10px"&gt;An error has occurred for task TaskName. Error message: The specified account name is not valid&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;A riguardo, c'è un hotfix specifico che corregge questo malfunzionamento. Lo potete trovare a questo indirizzo:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/953153/en-us" title="Error message when you change the running user context of a scheduled task to another domain account on a computer that is running Windows Vista or Windows Server 2008"&gt;http://support.microsoft.com/kb/953153/en-us&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Altrimenti, è possibile seguire il workaround qua descritto.
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creare il task senza cambiare l'utente con cui questo dovrà essere eseguito.&lt;/li&gt;&lt;li&gt;Esportare il task selezionato in un file XML.&lt;/li&gt;&lt;li&gt;Cancellare il task.&lt;/li&gt;&lt;li&gt;Apire il file XML appena creato e modificare il contenuto dell'elemento "UserId" all'interno del seguente elemento:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;div style="margin-left: 25px"&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;Principals&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;Principal&lt;/span&gt;&lt;span style='color:#FF0000'&gt; id=”Author”&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;UserId&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;DomainName\UserName&lt;span style='color:#0000FF'&gt;&lt;/&lt;/span&gt;&lt;span style='color:#800000'&gt;UserId&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;Principal&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;Principals&lt;/span&gt;&lt;span style='color:#0000FF'&gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Salvare il file XML appena modificato.&lt;/li&gt;&lt;li&gt;Importarlo all'interno del task scheduler&lt;/li&gt;&lt;/ul&gt;</content><link rel="alternate" type="text/html" href="/Blog/ErrorOnChangeRunningUserInWindowsServer2008TaskScheduler.aspx" /><issued>2009-11-1T17:17:44+01:00</issued><modified>2009-11-1T17:17:44+01:00</modified></entry><entry><title>Hands on lab per programmatori su SharePont 2010</title><id>/Blog/SharePoint2010HandsOnLabForDevelopers.aspx</id><created>2009-10-27T20:8:36+01:00</created><content type="text/html" mode="escaped">Calma.. calma.. non è niente di nuovo. Sono dei pdf con le medesime informazioni presenti all'interno dei &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx" title="Get Started Developing on SharePoint 2010" target="_blank"&gt;video&lt;/a&gt; che avevamo già &lt;a href="http://www.peppedotnet.it/Blog/SharePoint2010SDKAndResourceCenter.aspx" title="SharePoint 2010 SDK and Resource Center "&gt;segnalato&lt;/a&gt;.
&lt;br /&gt;La differenza è che li possiamo stampare e sicuramente a qualcuno interessa ;)
&lt;br /&gt;
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=C010FC68-B47F-4DB6-B8A8-AD4BA33A35C5&amp;displaylang=en#filelist" title="SharePoint 2010: Getting Started with Development on SharePoint 2010 Hands-on Labs in C# and Visual Basic"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=C010FC68-B47F-4DB6-B8A8-AD4BA33A35C5&amp;displaylang=en#filelist&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010HandsOnLabForDevelopers.aspx" /><issued>2009-10-27T20:8:36+01:00</issued><modified>2009-10-27T20:8:36+01:00</modified></entry><entry><title>Installare MOSS su Windows Server 2008 R2</title><id>/Blog/HowToInstallMOSSOnWindowsServer2008R2.aspx</id><created>2009-10-24T16:51:29+01:00</created><content type="text/html" mode="escaped">Se non avete a disposizione il dvd o l'immagine di MOSS 2007 completa di Service Pack 2 e se provate ad installare una versione precedente su una macchina Windows Server 2008 o Windows Server 2008 R2, la procedura di installazione verrà immeditamente bloccata a causa di un problema noto di compatibilità.
&lt;br /&gt;Nello specifico, verrà visualizzata la seguente schermata:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="/Images/InstallingMOSSonWindowsServer2008R2.jpg" alt="The program is blocked due to compatibility issues" /&gt;
&lt;br /&gt;
&lt;br /&gt;Per fare in modo di poter completare l'installazione, è necessario quindi seguire questi passi:
&lt;br /&gt;
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Estrarre il contenuto dell'immagine o del dvd di MOSS (normale o Service Pack 1) all'interno di un folder della propria macchina&lt;/li&gt;&lt;li&gt;Scaricare il service pack 2 sia di WSS 3.0 che di MOSS 2007&lt;/li&gt;&lt;li&gt;Lanciare da linea di comando entrambi gli aggiornamenti con l'opzione /extract:"C:/MOSSImage/Updates"&lt;/li&gt;&lt;li&gt;Cancellare il file wsssetup.dll dalla cartella "Updates" presente all'interno dell'immagine di MOSS&lt;/li&gt;&lt;li&gt;Ricreare la nuova immagine con già il Service Pack 2 presente&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Sia chiaro che il percorso "C:/MOSSImage" che ho citato in una delle operazioni è da sostituire con il vostro percorso al folder contenente l'immagine di MOSS estratta o dal relativo file .iso o direttamente dal dvd, pur mantenendo il riferimento alla cartella "Updates".
&lt;br /&gt;La stessa tecnica può essere utilizzata per l'inserimento all'interno del pacchetto di installazione anche dei vari language pack, l'unica cosa cui stare attenti è di inserire gli aggiornamenti ed i language pack corretti nel caso di immagini x86 e x64.
&lt;br /&gt;Spero sia utile.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Windows Server 2008.aspx" title="TAG: Windows Server 2008"&gt;Windows Server 2008&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/HowToInstallMOSSOnWindowsServer2008R2.aspx" /><issued>2009-10-24T16:51:29+01:00</issued><modified>2009-10-24T16:51:29+01:00</modified></entry><entry><title>SharePoint 2010 SDK and Resource Center</title><id>/Blog/SharePoint2010SDKAndResourceCenter.aspx</id><created>2009-10-20T10:19:23+01:00</created><content type="text/html" mode="escaped">&lt;a href="http://www.peppedotnet.it/Blog/SharePointFoundation2010.aspx" title="SharePoint Foundation 2010"&gt;Ieri&lt;/a&gt;, è iniziata la SharePoint conference e sempre ieri, è stata annunciata la nuova versione di &lt;a href="http://blogs.msdn.com/sharepoint/archive/2009/10/19/sharepoint-2010.aspx" title="SharePoint 2010 announcement"&gt;SharePoint&lt;/a&gt; direttamente dal blog del team del prodotto.
&lt;br /&gt;Inoltre sono state rese pubbliche tutte le prime risorse di valutazione del prodotto, compreso l'SDK sia di SharePoint Foundation 2010 che di SharePoint Server 2010, che i vari developer e resource center.
&lt;br /&gt;Ecco qua tutti i link disponibili al momento:
&lt;br /&gt;
&lt;br /&gt;- &lt;a href="http://sharepoint2010.microsoft.com/Pages/default.aspx" title="Sito web di SharePoint 2010"&gt;Sito web di SharePoint 2010&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/dd776256.aspx" title="SDK SharePoint Products and Technologies (2010)"&gt;SDK SharePoint Products and Technologies (2010)&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee514561.aspx" title="SharePoint 2010 Developer Center"&gt;SharePoint 2010 Developer Center&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/it-it/sharepoint/ee263917(en-us).aspx" title="SharePoint Foundation 2010 Resource Center on TechNet"&gt;SharePoint Foundation 2010 Resource Center on TechNet&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://technet.microsoft.com/it-it/sharepoint/ee263917(en-us).aspx" title="SharePoint Server 2010 Resource Center on TechNet"&gt;SharePoint Server 2010 Resource Center on TechNet&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://blogs.msdn.com/sharepointdeveloperdocs/archive/2009/10/19/SharePoint2010BetaDevDocsLive.aspx" title="SharePoint developer documentation team blog"&gt;SharePoint developer documentation team blog&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx" title="Getting started developing on SharePoint 2010"&gt;Get Start in SharePoint 2010 per sviluppatori&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee539826(office.14).aspx" title="What s new in SharePoint Foundation 2010"&gt;What's new in SharePoint Foundation 2010&lt;/a&gt;
&lt;br /&gt;- &lt;a href="http://msdn.microsoft.com/en-us/library/ee557323(office.14).aspx" title="What s new in SharePoint Server 2010"&gt;What's new in SharePoint Server 2010&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ancora la documentazione tecnica è decisamente incompleta, però qualcosa di interessante qua e la, lo si può intravedere. I video, invece, della parte di get start riguardo lo sviluppo sono già molto più interessanti.
&lt;br /&gt;Buona lettura e buona visione quindi !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Server 2010.aspx" title="TAG: SharePoint Server 2010"&gt;SharePoint Server 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010SDKAndResourceCenter.aspx" /><issued>2009-10-20T10:19:23+01:00</issued><modified>2009-10-20T10:19:23+01:00</modified></entry><entry><title>SharePoint Foundation 2010</title><id>/Blog/SharePointFoundation2010.aspx</id><created>2009-10-19T19:16:53+01:00</created><content type="text/html" mode="escaped">Sto guardando giusto adesso la keynote della &lt;a href="http://www.mssharepointconference.com" title="Microsoft SharePoint Conference 2009"&gt;SharePoint Conference&lt;/a&gt; di Las Vegas, tenuta da Steve Ballmer. Confesso che mi sarebbe proprio piaciuto andarci.. ma vabbè.
&lt;br /&gt;Comunque, dicevamo.. è stato appena annunciato che la versione gratuita di SharePoint NON si chiamerà più Windows SharePoint Services, ma bensì...
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;(suspance)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;... &lt;b&gt;SharePoint Foundation 2010&lt;/b&gt; !!
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;Il nome può essere condivisibile o meno, ma le caratteristiche del nuovo prodotto piaceranno sicuramente ad un sacco di gente. Questa sarà una settimana veramente piena di novità per noi sviluppatori SharePoint..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Foundation 2010.aspx" title="TAG: SharePoint Foundation 2010"&gt;SharePoint Foundation 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointFoundation2010.aspx" /><issued>2009-10-19T19:16:53+01:00</issued><modified>2009-10-19T19:16:53+01:00</modified></entry><entry><title>SharePoint events manager</title><id>/Blog/SharePointEventManagerWithAFeature.aspx</id><created>2009-10-18T20:22:37+01:00</created><content type="text/html" mode="escaped">Volevo segnalarvi un progetto veramente molto utile, presente su codeplex. Si tratta di un meccanismo di gestione degli &lt;a href="http://www.peppedotnet.it/Articoli/Wss3EventHandlers.aspx" title="Gli event handler di WSS 3.0"&gt;event handler&lt;/a&gt; di liste e document library SharePoint, accessibile da una pagina web.
&lt;br /&gt;L'attività di istallazione degli event handler è infatti da sempre un pò laboriosa, non che sia complessa sia chiaro, ma che ogni volta ti fa perdere un pò di tempo in quanto, senza l'utilizzo di tool esterni, la scelta può cadere solamente nella scrittura di una console application (o simili) oppure su di un handler legato all'evento di attivazione di una feature.
&lt;br /&gt;Con questo tool invece, è possibile aggiungere, modificare e cancellare gli eventi di una lista tramite un'interfaccia grafica intuitiva, che sicuramente accorcia i nostri tempi di sviluppo.
&lt;br /&gt;Questo il link diretto al progetto: &lt;a href="http://www.codeplex.com/speventsmanager" title="SharePoint Events Manager"&gt;http://www.codeplex.com/speventsmanager&lt;/a&gt;, dove potete trovare sia la soluzione da scaricare che qualche screenshot che vi introduce all'utilizzo della feature.
&lt;br /&gt;Confermo inoltre, che funziona con tutti i tipi di liste e document library, sia quelle di base (ovviamente) che su liste create con list definition personalizzate.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Event handler.aspx" title="TAG: Event handler"&gt;Event handler&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointEventManagerWithAFeature.aspx" /><issued>2009-10-18T20:22:37+01:00</issued><modified>2009-10-18T20:22:37+01:00</modified></entry><entry><title>Errore: &quot;The list that is referenced here no longer exists&quot;</title><id>/Blog/ErrorTheListThatIsReferencedHereNoLongerExists.aspx</id><created>2009-10-10T14:10:38+01:00</created><content type="text/html" mode="escaped">Richiamando il metodo UpdateListItems del web service Lists.asmx esposto da SharePoint, da un'applicazione Silverlight, mi sono scontrato con questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px;"&gt;ErrorCode: 0x81020026
&lt;br /&gt;ErrorText: The list that is referenced here no longer exists.&lt;/div&gt;
&lt;br /&gt;La chiamata andava a buon fine solamente se aprivo la mia applicazione silverlight da una pagina appartenente al sito di root della mia site collection, mentre nei sottositi mi ritornava sempre l'errore appena descritto. Anche se ero sicuro al 100% di passare l'identificativo giusto della mia lista.
&lt;br /&gt;L'errore stava sicuramente nell'indirizzo del web service. Si, perchè i web service di SharePoint vanno richiamati in base al sito in cui vogliono essere utilizzati ed io avevo inserito la referenza utilizzando l'indirizzo del sito di root. Mentre invece, se io volessi richiamare il web service Lists.asmx su di un sottosito, dovrei utilizzare un indirizzo del genere:
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;http://server/subsite/_vti_bin/lists.asmx&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Questa la sapevo, ma non riuscivo a capire come passare tale indirizzo alla classe proxy del web service, generata da Visual Studio, secondo la sintassi definita da WCF.
&lt;br /&gt;Ecco.. basta utilizzare una nuova istanza della classe EndpointAddress e passare il corretto indirizzo del web service, così da poter effettuare operazioni sul sito SharePoint desiderato.
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;string&lt;/span&gt; wsUrl = &lt;span style="color: #A31515"&gt;"http://server/subsite/_vti_bin/lists.asmx"&lt;/span&gt;;
&lt;br /&gt;BasicHttpBinding bind = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
&lt;br /&gt;bind.MaxReceivedMessageSize = 2147483647;
&lt;br /&gt;EndpointAddress endpoint = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; EndpointAddress(wsUrl);
&lt;br /&gt;SharePointListsService.ListsSoapClient client = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; SharePointListsService.ListsSoapClient(bind, endpoint);
&lt;br /&gt;client.UpdateListItemsCompleted +=
&lt;br /&gt;   &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; EventHandler&lt;SharePointListsService.UpdateListItemsCompletedEventArgs&gt;(client_UpdateListItemsCompleted);
&lt;br /&gt;
&lt;br /&gt;XElement batch = &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XElement(&lt;span style="color: #A31515"&gt;"Batch"&lt;/span&gt;,
&lt;br /&gt;       &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XAttribute(&lt;span style="color: #A31515"&gt;"OnError"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"Continue"&lt;/span&gt;),
&lt;br /&gt;       &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XAttribute(&lt;span style="color: #A31515"&gt;"ListVersion"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"1"&lt;/span&gt;),
&lt;br /&gt;              &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XElement(&lt;span style="color: #A31515"&gt;"Method"&lt;/span&gt;,
&lt;br /&gt;                     &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XAttribute(&lt;span style="color: #A31515"&gt;"ID"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"1"&lt;/span&gt;),
&lt;br /&gt;                     &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XAttribute(&lt;span style="color: #A31515"&gt;"Cmd"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"Update"&lt;/span&gt;),
&lt;br /&gt;                     &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XElement(&lt;span style="color: #A31515"&gt;"Field"&lt;/span&gt;, &lt;span style="color: #0000FF"&gt;new&lt;/span&gt; XAttribute(&lt;span style="color: #A31515"&gt;"Name"&lt;/span&gt;, &lt;span style="color: #A31515"&gt;"Title"&lt;/span&gt;), &lt;span style="color: #A31515"&gt;"TEST"&lt;/span&gt;)));
&lt;br /&gt;
&lt;br /&gt;client.UpdateListItemsAsync(&lt;span style="color: #A31515"&gt;"{8a03009d-44eb-4ec5-9ac5-9c1841e0ac11}"&lt;/span&gt;, batch);&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Per poi gestire l'evento UpdateListItemsCompleted come meglio crediamo..
&lt;br /&gt;
&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="color: #0000FF"&gt;void&lt;/span&gt; client_UpdateListItemsCompleted(&lt;span style="color: #0000FF"&gt;object&lt;/span&gt; sender, SharePointListsService.UpdateListItemsCompletedEventArgs e)
&lt;br /&gt;{
&lt;br /&gt;    &lt;span style="color: #0000FF"&gt;if&lt;/span&gt;(e.Error == &lt;span style="color: #0000FF"&gt;null&lt;/span&gt;)
&lt;br /&gt;        HtmlPage.Window.Alert(&lt;span style="color: #A31515"&gt;"Update done successfully !"&lt;/span&gt;);
&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;Senza utilizzare WCF, bastava settare la proprietà "Url" della classe proxy con l'indirizzo corretto del web service, a partire da quello proprio del sottosito SharePoint.
&lt;br /&gt;Spero possa esservi utile..
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&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/Lists web service.aspx" title="TAG: Lists web service"&gt;Lists web service&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorTheListThatIsReferencedHereNoLongerExists.aspx" /><issued>2009-10-10T14:10:38+01:00</issued><modified>2009-10-10T14:10:38+01:00</modified></entry><entry><title>Errore: &quot;The [column name] column is a read-only column that cannot be modified&quot;</title><id>/Blog/ErrorTheColumnIsAReadOnlyColumnThatCannotBeModified.aspx</id><created>2009-10-6T22:7:48+01:00</created><content type="text/html" mode="escaped">E' da ieri che son stato dietro a questo problema. Praticamente, solo su alcuni computer, con installato Office 2003, mi capitava di aprire una lista SharePoint selezionando l'opzione "Export to spreadsheet" dalla toolbar classica di WSS, e capire di non poter modificare alcun valore su nessuna colonna della mia lista. Lo stesso comportamento era stato riscontrato su tutte le liste SharePoint.
&lt;br /&gt;Eppure, su altri computer funzionava che era una meraviglia. Mah..
&lt;br /&gt;La cosa veramente strana poi, era che se aprivo la stessa lista in "datasheet view" e poi selezionavo l'opzione "Task pane" sempre dal menu "Actions", avevo la possibilità di aprire il file in Excel facendo click sul link "Export and link to Excel" e di modificarlo a mio piacimento, mantenedo sempre le modifiche sincronizzate con la mia lista SharePoint di partenza.
&lt;br /&gt;
&lt;br /&gt;Girando un pò sulla kb Microsoft, ho trovato il seguente hotfix per Office 2003:
&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/952608" title="Hotfix Office 2003"&gt;http://support.microsoft.com/kb/952608&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;che mi ha risolto il problema su quelle macchine in cui si verificava.
&lt;br /&gt;se vi capita, sapete dove andare a parare :)
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&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/Office 2003.aspx" title="TAG: Office 2003"&gt;Office 2003&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/hotfix.aspx" title="TAG: hotfix"&gt;hotfix&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorTheColumnIsAReadOnlyColumnThatCannotBeModified.aspx" /><issued>2009-10-6T22:7:48+01:00</issued><modified>2009-10-6T22:7:48+01:00</modified></entry><entry><title>Le dipendeze tra feature SharePoint</title><id>/Blog/SharePointFeatureDependencies.aspx</id><created>2009-9-29T20:37:21+01:00</created><content type="text/html" mode="escaped">Siamo al terzo appuntamento riguardo l'utilizzo delle feature SharePoint su &lt;a href="http://www.aspitalia.com" title="ASPItalia.com"&gt;ASPItalia&lt;/a&gt;. Questa volta è il tempo di un breve tip sulla creazione di dipedenze tra una o più features.
&lt;br /&gt;Questa è una tecnica semplice ma allo stesso tempo molto utile nel caso in cui si debba distribuire differenti feature che però utilizzano una gli oggetti e le personalizzazioni dell'altra.
&lt;br /&gt;Ecco il link diretto dello script:
&lt;br /&gt;&lt;a href="http://www.aspitalia.com/script/992/Gestire-Automaticamente-Dipendenze-Feature-SharePoint.aspx" title="Gestire automaticamente dipendenze tra feature SharePoint"&gt;http://www.aspitalia.com/script/992/Gestire-Automaticamente-Dipendenze-Feature-SharePoint.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Buona lettura !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Feature.aspx" title="TAG: Feature"&gt;Feature&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointFeatureDependencies.aspx" /><issued>2009-9-29T20:37:21+01:00</issued><modified>2009-9-29T20:37:21+01:00</modified></entry><entry><title>Limiti massimi di colonne all'interno di una lista SharePoint</title><id>/Blog/MaxNumberOfColumnsInASharePointList.aspx</id><created>2009-9-26T11:44:46+01:00</created><content type="text/html" mode="escaped">Ogni tanto può capitare di dover creare delle liste SharePoint con un sacco di colonne, dei più svariati tipi. Chiaramente, c'è un limite per ogni tipologia di colonna creata che non può essere superato. Se si cerca di farlo, viene restituito dall'interfaccia utente di SharePoint il seguente errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-style: italic; margin-left: 10px; color: red"&gt;Column Limit Exceeded.
&lt;br /&gt;There are too many columns of the specified data type. Please delete some other columns first.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;I limiti propri di Windows SharePoint Services 3.0 sono questi:
&lt;br /&gt;&lt;ul&gt;&lt;li&gt;64 caselle di testo singola e scelta (con menu a discesa o pulsanti di opzione)&lt;/li&gt;&lt;li&gt;31 caselle di testo multipla e scelta (con l'opzione consenti selezioni multiple attivata)&lt;/li&gt;&lt;li&gt;32 numeri e valute&lt;/li&gt;&lt;li&gt;32 link ipertestuali&lt;/li&gt;&lt;li&gt;16 date e ore&lt;/li&gt;&lt;li&gt;16 lookup&lt;/li&gt;&lt;li&gt;16 Sì/No&lt;/li&gt;&lt;li&gt;8 campi calcolati&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Da notare è che molte tipologie di campi ereditano le une dalle altre, quindi in casi del genere il numero totale di campi sopra descritto va dimezzato. Per esempio, siccome il campo valuta eredita dal campo numero, possiamo avere un totale di 32 campi di questi due tipi, NON 32 di un tipo e 32 dell'altro.
&lt;br /&gt;Ulteriori informazioni sono disponibili in questo articolo della KB Microsoft: &lt;a href="http://support.microsoft.com/kb/823555/en-us" title="Column Limit Exceeded Message When You Add a New Column to a SharePoint Services List"&gt;http://support.microsoft.com/kb/823555/en-us&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/MaxNumberOfColumnsInASharePointList.aspx" /><issued>2009-9-26T11:44:46+01:00</issued><modified>2009-9-26T11:44:46+01:00</modified></entry><entry><title>Creazione di un Content Type tramite una Feature in SharePoint</title><id>/Blog/ProvisioningContentTypesWithAFeature.aspx</id><created>2009-9-22T8:41:25+01:00</created><content type="text/html" mode="escaped">Come vi dicevo &lt;a href="http://www.peppedotnet.it/Blog/SharePointSiteColumnsWithFeature.aspx" title="Definizione di Site Columns tramite una Feature di SharePoint"&gt;lunedì scorso&lt;/a&gt;, oggi è stato pubblicato un altro contenuto su SharePoint sempre su &lt;a href="http://www.aspitalia.com" title="ASPItalia.com"&gt;ASPItalia.com&lt;/a&gt; e, per rispettare le mie parole, è stato il turno dei Content Types.
&lt;br /&gt;L'utilizzo di questa tecnica, a mio parere, è fondamentale per lo sviluppo di applicazioni basate su SharePoint perchè permette di definire un'insieme di colonne personalizzate che saranno poi la struttura di una o più istanze di lista, che, una volta create, possono essere gestite e modificate da un'unica posizione. I vari cambiamenti effettuati su queste colonne, verranno poi applicati a cascata su tutte le liste che utilizzano il content type scelto per la modifica.
&lt;br /&gt;E' proprio per questo inoltre, che vi parlavo della forte connessione che esiste tra i content type e le site column, argomento del precedente tip.
&lt;br /&gt;
&lt;br /&gt;Che dire d'altro.. buona lettura !
&lt;br /&gt;Questo il link diretto al tip:
&lt;br /&gt;&lt;a href="http://www.aspitalia.com/script/991/Creazione-Content-Type-Tramite-Feature-SharePoint.aspx" title="Creazione di un Content Type tramite una Feature in SharePoint"&gt;http://www.aspitalia.com/script/991/Creazione-Content-Type-Tramite-Feature-SharePoint.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] </content><link rel="alternate" type="text/html" href="/Blog/ProvisioningContentTypesWithAFeature.aspx" /><issued>2009-9-22T8:41:25+01:00</issued><modified>2009-9-22T8:41:25+01:00</modified></entry><entry><title>Errore: &quot;The Windows SharePoint Services Timer service is NOT started!&quot;</title><id>/Blog/ErrorTheWindowsSharePointServicesTimerServiceIsNotStarted.aspx</id><created>2009-9-21T20:38:41+01:00</created><content type="text/html" mode="escaped">Utilizzo ormai da tanto il &lt;a href="http://www.codeplex.com/sharepointinstaller" title="SharePoint Solution Installer oin Codeplex"&gt;Solution Installer&lt;/a&gt; disponibile su codeplex, sopratutto legato al tool &lt;a href="http://www.codeplex.com/wspbuilder" title="WSPBuilder on Codeplex"&gt;WSPBuilder&lt;/a&gt; per il deployment delle mie personalizzazioni su SharePoint.
&lt;br /&gt;Oggi, ho iniziato il deployment su un nuovo server con installato Windows Server 2008. Lancio l'installer e vengono subito fermato al primo step da questo messaggio d'errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="color: red; font-style: italic; margin-left: 10px"&gt;The Windows SharePoint Services Timer service is NOT started!&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;errore visibile in figura:
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.peppedotnet.it/Images/SolutionInstallerError.jpg" alt="Error" /&gt;
&lt;br /&gt;
&lt;br /&gt;Controllo subito i servizi e mi accorgo che invece il timer service di SharePoint sta girando correttamente.
&lt;br /&gt;Dopo un pò di prove, arrivo alla soluzione: basta eseguire l'installer con permessi di amministratore, in quando la UAC di Windows Server 2008 blocca l'operazione che effettua il controllo sullo stato del sevizio timer.
&lt;br /&gt;Quindi, mi è bastato semplicemente fare tasto destro sull'installer e scegliere l'opzioni "run as administrator" !
&lt;br /&gt;Avevo già sentito da alcuni colleghi di problemi relativi alla UAC di Windows Server 2008, ma li per li pensavo ad altro...
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint Solution Installer.aspx" title="TAG: SharePoint Solution Installer"&gt;SharePoint Solution Installer&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSPBuilder.aspx" title="TAG: WSPBuilder"&gt;WSPBuilder&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Windows Server 2008.aspx" title="TAG: Windows Server 2008"&gt;Windows Server 2008&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/ErrorTheWindowsSharePointServicesTimerServiceIsNotStarted.aspx" /><issued>2009-9-21T20:38:41+01:00</issued><modified>2009-9-21T20:38:41+01:00</modified></entry><entry><title>Definizione di Site Columns tramite una Feature di SharePoint</title><id>/Blog/SharePointSiteColumnsWithFeature.aspx</id><created>2009-9-14T17:43:36+01:00</created><content type="text/html" mode="escaped">Oggi iniziano una serie di pubblicazioni riguardanti SharePoint su &lt;a href="http://www.aspitalia.com" title="ASPItalia.com"&gt;ASPItalia.com&lt;/a&gt;, per le quali ringrazio subito &lt;a href="http://blogs.aspitalia.com/daniele/" title="Daniele Bochicchio"&gt;Daniele&lt;/a&gt;, &lt;a href="http://blogs.aspitalia.com/cradle/" title="Marco De Sanctis"&gt;Marco&lt;/a&gt; e tutti gli altri !
&lt;br /&gt;Sono contenuti che ho scritto un pò di tempo fa, ma che sono sicuro troverete veramente d'aiuto. La serie riguarda la creazione e la relativa installazione di personalizzazioni alla piattaforma SharePoint, utilizzando le features.
&lt;br /&gt;Aprono le danze le site columns:
&lt;br /&gt;&lt;a href="http://www.aspitalia.com/script/990/Definizione-Site-Columns-Tramite-Feature-SharePoint.aspx" title="Definizione di Site Columns tramite una Feature di SharePoint"&gt;http://www.aspitalia.com/script/990/Definizione-Site-Columns-Tramite-Feature-SharePoint.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;argomento di base, ma sicuramente molto importante per la creazione di applicazioni robuste e ben strutturate.
&lt;br /&gt;Poi a ruota, vedremo i content types, le list definition e le dipendenze tra features !
&lt;br /&gt;Mi raccomando.. tenete diritte le antenne !
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: 
[&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Site columns.aspx" title="TAG: Site columns"&gt;Site columns&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Content types.aspx" title="TAG: Content types"&gt;Content types&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointSiteColumnsWithFeature.aspx" /><issued>2009-9-14T17:43:36+01:00</issued><modified>2009-9-14T17:43:36+01:00</modified></entry><entry><title>Prima technical preview di SharePoint 2010</title><id>/Blog/First-Technical-Preview-Of-SharePoint-2010.aspx</id><created>2009-7-20T11:48:43+01:00</created><content type="text/html" mode="escaped">Dal sito Microsoft, è uscita la prima technical preview di SharePoint 2010 per noi sviluppatori. La potete trovare seguendo questo indirizzo:
&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=94afe886-3b20-4bc9-9a0d-acd8cd232c24" title="SharePoint Products and Technologies: 2010 (Technical Preview) Developer Documentation"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=94afe886-3b20-4bc9-9a0d-acd8cd232c24&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;Ho dato uno sguardo rapido e ci ho trovato un chm con la documentazione riguardante le nuove classi introdotte fin'ora all'interno del modello ad oggetti ed un documento riguardante la personalizzazione della nuova interfaccia "a ribbon".
&lt;br /&gt;Questa viene gestita come se ogni elemento fosse una custom action, concetto aggiunto in SharePoint 3.0 (MOSS 2007), con la possibilità quindi di aggiungerne di nuove o nasconderne utilizzando una feature e uno o più elementi di configurazione di tipo "CustomAction" o "HideCustomAction".
&lt;br /&gt;La novità, oltre chiaramente alla visualizzazione a ribbon delle operazioni, sta anche nel fatto che i bottoni con cui vengono scatenate queste azioni &lt;b&gt;possono essere sovrascritti&lt;/b&gt;, cosa che invece ora non è possibile.
&lt;br /&gt;Per un overview su SharePoint 2010, vi rimando a &lt;a href="/Blog/SharePoint2010Overview.aspx" title="SharePoint 2010 Overview"&gt;questo post&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Ribbon.aspx" title="TAG: Ribbon"&gt;Ribbon&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/First-Technical-Preview-Of-SharePoint-2010.aspx" /><issued>2009-7-20T11:48:43+01:00</issued><modified>2009-7-20T11:48:43+01:00</modified></entry><entry><title>SharePoint 2010 - Overview</title><id>/Blog/SharePoint2010Overview.aspx</id><created>2009-7-13T18:59:17+01:00</created><content type="text/html" mode="escaped">Microsoft ha messo da poco on-line la prima documentazione per quanto riguarda la prossima versione di SharePoint. Sul sito di riferimento sono disponibili dei video introduttivi, dove è possibile vedere quali sono state le migiorie apportate al prodotto per quanto riguarda i professionisti IT, gli sviluppatori ed in generale chi lavora con SharePoint.
&lt;br /&gt;Ecco il sito di riferimento: &lt;a href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx" title="SharePoint 2010 overview"&gt;http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint 2010.aspx" title="TAG: SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePoint2010Overview.aspx" /><issued>2009-7-13T18:59:17+01:00</issued><modified>2009-7-13T18:59:17+01:00</modified></entry><entry><title>Parameter web Url is missing or invalid.0x82000001</title><id>/Blog/SharePointErrorParameterWebUrlIsMissingOrInvalid0x82000001.aspx</id><created>2009-7-5T12:22:24+01:00</created><content type="text/html" mode="escaped">Stavo utilizzando i web service esposti da SharePoint per effettuare delle operazioni al di fuori del contesto in cui SharePoint normalmente opera. In particolare stavo utilizzando il servizio Webs.asmx per recuperare alcune informazioni sui sottositi di una site collection.
&lt;br /&gt;Fin quandom, utilizzando il metodo GetWeb(string webUrl), non incappo in questo errore:
&lt;br /&gt;
&lt;br /&gt;&lt;div style="font-style: italic; color: red"&gt;Parameter web Url is missing or invalid.0x82000001&lt;/div&gt;
&lt;br /&gt;Li per li penso di aver passato malamente il parametro "webUrl" che necessita al metodo per funzionare. Poi, ricercando un pò su internet, mi sono accorto della presenza di questo documento di specifiche:
&lt;br /&gt;&lt;a href="http://download.microsoft.com/download/8/5/8/858F2155-D48D-4C68-9205-29460FD7698F/%5BMS-WEBSS%5D.PDF" title="Webs web service protocolo specification"&gt;http://download.microsoft.com/download/8/5/8/858F2155-D48D-4C68-9205-29460FD7698F/%5BMS-WEBSS%5D.PDF&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;All'interno di tale documento è descritto alla perfezione l'errore in questione, cioè che è stato passato un indirizzo non valido alla proprietà URL della classe proxy, generata da Visual Studio. Vado subito a controllare ed in effetti era proprio così.
&lt;br /&gt;Visual Studio mi aveva generato correttamente la classe proxy in base ad un indirizzo che gli avevo passato manualmente in fase di creazione della nuova web reference. Poi, siccome i web service di SharePoint mantengono tutti la medesima struttura, pur potendo essere chiamati a partire da siti differenti, avevo deciso di settare il valore dell'indirizzo dato alla proprietà URL a runtime, sbagliando l'assegnamento. Ed ecco qua spiegato l'errore.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;TAGS: [&lt;a href="http://www.peppedotnet.it/Tags/SharePoint.aspx" title="TAG: SharePoint"&gt;SharePoint&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/MOSS.aspx" title="TAG: MOSS"&gt;MOSS&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/WSS 3.0.aspx" title="TAG: WSS 3.0"&gt;WSS 3.0&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Web Service.aspx" title="TAG: Web Service"&gt;Web Service&lt;/a&gt;] [&lt;a href="http://www.peppedotnet.it/Tags/Webs.asmx.aspx" title="TAG: Webs.asmx"&gt;Webs.asmx&lt;/a&gt;]</content><link rel="alternate" type="text/html" href="/Blog/SharePointErrorParameterWebUrlIsMissingOrInvalid0x82000001.aspx" /><issued>2009-7-5T12:22:24+01:00</issued><modified>2009-7-5T12:22:24+01:00</modi