Emanuele Bartolesi

SharePoint, Kinect and Xbox addicted.

NAVIGATION - SEARCH

Impostare una pagina personalizzata come homepage di SharePoint

In SharePoint è possibile impostare una pagina personalizzata come home page anche senza aver attivato la feature di Publishing.
Questo è possibile attraverso un piccolo script di PowerShell:

$site = Get-SPSite http://sitosharepoint/
$rootweb = $site.RootWeb
$rootfolder = $rootweb.RootFolder
$rootfolder.WelcomePage = "Site Pages/MyPage.aspx"
$rootfolder.update()
$rootweb.Dispose()
$site.Dispose()

Nel caso in cui non si utilizzi la consolle PowerShell di SharePoint, ma quella "normale" è necessario aggiungere come prima istruzione allo script:

Add-PSSnapIn "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue

 

Extension Methods: le basi

Gli extension methods sono stati aggiunti in C# dal framework 3.0. La loro funzione è quella di creare metodi su tipi già esistenti senza il bisogno di avere il codice sorgente.
La sintassi è molto semplice perché essenzialmente un extension method è una funzione statica dentro a una classe statica il cui nome deve essere composto dal tipo a cui vogliamo "attacare" il metodo e la parola "Extensions".

Nel metodo seguente c'è un esempio di come estendere il tipo String con una funzione molto semplice che controlla che l'inizio di una stringa sia "win".

public static class StringExtensions
{
	public static bool StartsWithWin(this string s)
	{
		return !string.IsNullOrWhiteSpace(s) && s.StartsWith("win");
	}
}

Per usare questo metodo è sufficiente scrivere:

string os = "wp8";

Console.WriteLine(os.StartsWithWin());
Console.WriteLine("windows".StartsWithWin());

Gli extension methods inoltre supportano anche l'uso dei parametri come nell'esempio seguente:

public static bool StartsWithWin(this string s, int length)
{
	return !string.IsNullOrWhiteSpace(s) && s.StartsWith("win") &&  length == 3;
}

Console.WriteLine(os.StartsWithWin(os.Length));

Inoltre possono essere chiamati in cascata come nel codice sotto:

Console.WriteLine("aa aa aa".ToUpper().RemoveSpaces());

Come ultima cosa è bene sapere che se l'istanza ha già un metodo con lo stesso nome di un nostro metodo, la priorità di esecuzione è del metodo di istanza.
Ad esempio se nominiamo un metodo ToUpper (estendendo per esempio il tipo String), verrà eseguito il metodo ToUpper dell'istanza base che si trova in String e non il nostro.

In allegato potete trovare l'esempio completo usato per scrivere questo post.

ConsoleExtensionMethods.zip (35,99 kb)

SharePoint: impostare il logout automatico dopo un periodo di inattività

In alcuni scenari è richiesto il logout automatico dalla sessione di SharePoint attualmente in uso. Per fare questo non esiste una feature out-of-the-box, ma va implementata a mano.
La via più veloce è quella di creare un javascript che richiama la pagina di logout dopo un certo periodo di inattività.

Per prima cosa bisogna aggiungere nella masterpage attualmente in uso il seguente codice:

$(document).ready(function () {
    idleTime = 0;
    LogOutWhenInactive();
});

function LogOutWhenInactive() {
    var idleInterval = setInterval(checkInactivity, 60000);

    //if the user moves the mouse on page
    $(this).mousemove(function (e) {
        idleTime = 0;
    });
    
    //if the user press any key on page
    $(this).keypress(function (e) {
        idleTime = 0;
    });
}

function checkInactivity() {
    idleTime = idleTime + 1;
    
    //if idleTime == 5 minutes
    if (idleTime > 4) {
        window.location = "http://[sharepoint site]/_layouts/15/SignOut.aspx";
    }
}

Per cambiare il tempo di inattività, basta variare il controllo sulla variabile idleTime. Al posto di [sharepoint site] ovviamente dovete inserire la root del vostro sito SharePoint.

SharePoint: recuperare il valore di una lookup con il Client Object Model

In questo post andremo a vedere come recuperare il valore (e l'id) di un campo di tipo lookup, utilizzando il Client Object Model.

Per focalizzarsi solo sull'argomento partiamo dall'assunto di avere una lista su SharePoint denominata "Contatti".
Questa lista deve avere inoltre un campo di tipo lookup denominata "TipoContatto". In caso vi manchi questa parte, potete fare riferimento al post di Giuseppe Marchi.

A questo punto non vi resta altro che caricare gli elementi in una variabile come avreste sempre fatto con il Client Object Model:

ClientContext _clientContext = new ClientContext("http://sp2013");

List list = _clientContext.Web.Lists.GetByTitle("Contatti");
CamlQuery camlQuery = new CamlQuery();

camlQuery.ViewXml = "Query CAML";

ListItemCollection listItems = list.GetItems(camlQuery);

_clientContext.Load(listItems);

_clientContext.ExecuteQuery();

A questo punto, per recuperare il valore e l'id della lookup è sufficiente scrivere questo altro snippet di codice (ad esempio facendo un foreach sugli elementi:

foreach (ListItem listItem in listItems) 
{
    var contactType = listItem["TipoContatto"] as Microsoft.SharePoint.Client.FieldLookupValue;
	var value = contactType.LookupValue;
	var id = contactType.LookupId;
}

 

Brackets - un editor web scritto in javascript

Chiunque lavori con pagine web moderne (e quindi HTML5, CSS3 e tanto JavaScript) ha sempre la difficoltà di trovare un editor all'altezza delle aspettative.
Io stesso ne ho provati tanti, ma oltre a Visual Studio (soprattutto la versione 2013), gli altri avevano sempre qualche difetto di troppo o mancava sempre qualcosa.
A volte però mi capita di non lavorare da dentro Visual Studio perché sto facendo dei proof oppure sto lavorando con dei siti statici.
Ecco allora che viene in aiuto un prodotto abbastanza recente: Brackets.

Brackets è un progetto free e opensource di Adobe. Il sito ufficiale è http://brackets.io/.

E' uno strumento completamente scritto in javascript (anche io non ci credevo quando l'ho letto) e molto snello.
Ovviamente non ha il concetto di "progetto" vero e proprio ma lavora su una cartella. Quindi è possibile aprire i nostri progetti da File -> Open Folder. Se eventualmente stiamo modificando anche i nostri file su Visual Studio o un altro editor, non ci sono problemi perché si accorge delle modifiche e fa il refresh del file.

La cosa che mi piace di più è il Live Preview. Una volta che avete aperto i vostri file HTML, se premete nell'icona a forma di fulmine in alto a destra, oppure da File -> Live Preview, Brackets vi aprirà un'istanza di chrome con caricata la vostra pagina attuale. A questo punto se fate una modifica al volo sulle pagine HTML o un file CSS3, sul browser appare immediatamente la modifica senza dover effettuare nessun salvataggio o refresh della pagina.
Putroppo questa funzionalità per ora è supportata solo da Chrome, ma sul sito ufficiale c'è scritto che verrà implementata presto anche per altri browser. Questa funzionalità funziona anche per i file javascript ma è necessario salvare il file per vedere le modifiche fatte.

Un'altra cosa interessante di questo editor è la possibilità di aumentare le funzionalità tramite estensioni.
Direttamente da dentro l'editor dal menu File -> Extension Manager è possibile accedere a una lista di estensioni realizzate dalla community (sempre molto attiva) e installarle con un semplice click. E' possibile inoltre installare le estensioni anche inserendo l'url del progetto github direttamente.
Una delle estensioni che trovo più utile è "Indentator". Con questa estensione è possibile riformattare il documento con le indentazioni giuste dal menu Edit -> Indent Document, oppure con lo shortcut da tastiera Ctrl + Alt + I. Un po’ come l'equivalente di Ctrl + K + D di Visual Studio.

A proposito di Visual Studio, per chi fosse abituato a vedere i colori di highlight  del codice in quel modo, può sempre scaricare alcuni temi, sempre Extension Manager, inserendo il seguente URL: https://github.com/MiguelCastillo/Brackets-Themes. Nella nuova voce di menu che apparirà "Themes" è possibile trovare, fra gli altri, anche il tema standard di Visual Studio.

 

Usare il designer di Visual Studio 2013 per le pagine HTML

Il nuovo editor HTML di Visual Studio 2013 non supporta più di default le tre visualizzazioni classiche di editing delle pagine "Design | Split | Source".
Questa opzione però può essere riabilitata per le pagine HTML statiche e far tornare il vecchio comportamento.

Per fare questo basta cliccare da Solution Explorer con il tasto destro su una pagina Html e cliccare su "Open With..."

A questo punto, selezionare nella nuova finestra "HTML(Web Forms) Editor" e cliccare su "Set as Default".

Adesso tutte le pagine HTML delle vostre solution avranno di nuovo i tre pulsanti di switch tra le varie visualizzazioni. 

Post "WebCast - In-app purchase in Windows Phone 8"

Ieri ho tenuto il mio secondo webcast da quando faccio parte di DotNetToscana.
L'argomento trattato era l'in-app purchase in Windows Phone 8.
Devo dire che sono rimasto soddisfatto per la partecipazione, visto anche l'argomento non proprio comune.

Ho caricato le slide su SlideShare e il progetto di esempio lo potete trovare in allegato.
Tutto il materiale potete anche trovarlo sul nostro sito ufficiale della community.

A breve sarà anche disponibile il video della registrazione.

InAppPurchaseDemo.zip (310,69 kb)

[UPDATE]

Al seguente indirizzo potete trovare la registrazione del webcast completa: http://www.youtube.com/watch?v=R-cT93Wew8Q

Aggiungere una barra di caricamento a una pagina ASP.NET MVC con HTML5 e jQuery

In alcuni casi, soprattutto quando la pagina ha un tempo di caricamento lungo oppure quando vogliamo dare un feedback all'utente immediato, abbiamo la necessità di dotare le nostre pagine di una barra di caricamento.
Per fare questo sono necessarie poche righe di codice e l'effetto è comunque assicurato.

Per prima cosa bisogna scaricare la libreria aggiornata NProgress dal sito ufficiale dell'autore: http://ricostacruz.com/nprogress
A questo punto basta copiare i file "nprogress.css" e "nprogress.js" in una cartella del vostro sito e includerli nella pagina.
Per inserire la barra in ogni pagina, è buona norma inserire gli scripts nel file "_Layouts.cshtml".

 

A questo punto, come da esempio sul sito ufficiale, bisogna inserire le funzioni di avvio della barra e di fine caricamento, rispettivamente sul document.ready di jQuery e sulla window.onload della pagina.

<script type="text/javascript">
        (function ($) {

            $(function () {
                NProgress.start();
            });

            window.onload = function () {
                NProgress.done();
            };

        })(jQuery);
    </script>

In questo modo avete già una barra di caricamento sulle vostre pagine. Ovviamente la funzione di fine caricamento la potete applicare anche a delle vostre funzioni jQuery di download asincrono di dati, di salvataggio di informazioni e altro ancora.

Attraverso il file "nprogress.css" è possibile anche modificare il layout della barra, come ad esempio il colore, l'altezza o la posizione della barra stessa.
Per cambiare il colore, ad esempio, possiamo andare a modificare la porzione del file css in questo modo:

#nprogress .bar {
  background: #0094ff;
  position: fixed;
  z-index: 100;
  top: 0;
  left: 0;
  width: 100%;
  height: 100px;
}

Inoltre, la barra che abbiamo appena creato, può essere applicata oltre che su un sito ASP.NET MVC, anche sulle App di Office 365, SharePoint 2013 o in generale ovunque possa essere usato HTML5 e jQuery.

In allegato potete trovare un esempio applicato a un sito ASP.NET MVC 5.

NProgressDemo.zip (389,99 kb)

Rilasciato il Service Pack 1 di SharePoint 2013

Il 25 Febbraio è stato rilasciato il Service Pack 1 di SharePoint 2013 e Office 2013.

Sono stati corretti numerosi bugs o malfunzionamenti, anche per semplificare la vita dello sviluppatore. Uno fra tutti, il supporto di IE11 durante la modifica delle pagine di SharePoint.
Riporto qui sotto la lista di tutte le correzioni (relative solo a SharePoint). A questo link potete trovare la lista completa anche per i prodotti Office 2013.

SharePoint 2817429​ Metadata is lost when documents that use a custom content type with a "Description" field are opened for editing.
SharePoint 2817429​ When an item is deleted, restored from recycle bin, and then deleted again, there is a primary key constraint error.
SharePoint 2817429​ An error occurs when files are moved between document libraries and the web time zone is behind that of the server.
SharePoint 2817429​ Metadata filtering at list level always lists all metadata terms.
SharePoint 2817429​ The hyperlink popup window drops the selected word to be linked when there is a delay of more than one second in opening the window.
SharePoint 2817429​ Multiple-column, SummaryLinkWebParts with a group heading style of "Separator" are rendered incorrectly.
SharePoint 2817429​ A hash tag that contains a full width space does not get created successfully.
SharePoint 2817429​ Search schema compression is now enabled by default to allow larger search schemas.
SharePoint 2817429​ Highlighting for FQL queries is now enabled for FQL as well as KQL.
SharePoint 2817429​ Opening a custom SharePoint list in datasheet view and applying multiple custom filters, where each filter has more than one condition, can result in an incomplete set of list items.
SharePoint 2817429​ When the "Export to Excel" button is clicked in a SharePoint document library that has the Content Type field displayed, the Content Type field does not appear in the Excel workbook.
SharePoint 2817429​ An error occurs after changing the "Manager" property in EditProfile.aspx page when the My Sites WebApp is not in the same farm as the UPA.
SharePoint 2817429​ SharePoint REST API does not return a well-defined error response for a duplicate key exception.
SharePoint 2817429​ Developers are unable to specify a Content Type ID when creating Content Types in the client object model.
SharePoint 2817429​ On list views in SharePoint sites, the Connect to Outlook button in the ribbon may be erroneously disabled.
SharePoint 2817429​ In some non-English languages of SharePoint, the text displayed in the callout UI for a document or list item, describing who last edited the item, may not be grammatically correct.
SharePoint 2817429​ Copy and Paste in a datasheet does not work correctly with Internet Explorer 11.
SharePoint 2817429​ Pages do not render in Safari for iPad when private browsing mode is used.
SharePoint 2817429​ When editing rich text fields in SharePoint, if the editing session exceeds 30 minutes, the edits may not be saved.
SharePoint 2817429​ An error that says "SCRIPT12004: An internal error occurred in the Microsoft Internet extensions" may occur intermittently when users visit their SkyDrive Pro or other pages on their personal site.
SharePoint 2817429​ InfoPath may crash when a form that points to a SharePoint list, with a lookup to another SharePoint list, is opened.
SharePoint 2817429​ An InfoPath form with extended characters in its name fails to open.
SharePoint 2817429​ An error that says "Security Validation for the form has timed out" may occur when an InfoPath form is digitally signed and hosted in a SharePoint site collection that uses the SharePoint version 2010 user experience.
SharePoint 2817429​  "Show document icon" remains unchecked and the document icon does not show in Edit Properties for a list item.
SharePoint 2817429​ A "Failed tagging this page" error occurs when the "I like it" button is clicked.
SharePoint 2817429​ The wrong term is removed when manually editing a multi-valued taxonomy field.
SharePoint 2817429​ When tagging list items using a language that is different from the term store default language, suggestions for labels are offered in multiple languages. The suggestions appear confusing because both language suggestions are listed without any identification of the language.
SharePoint 2817429​ An error that says "There was an error processing this request" may appear when editing the user profile.
SharePoint 2817429​ Times are missing from Date/Time results in certain filtered list web service calls.
SharePoint 2817429​ Minimal and no metadata are now enabled as supported JSON formats.  
SharePoint 2817429​ Actions4 schema workflow actions can't be deployed to SharePoint.
SharePoint 2817429​ Using Client Object Model, Stream.Seek() to seek to a particular position doesn't seek at the proper offset.
SharePoint 2817429​ Refreshing a workflow status page generates the following error: "System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary."
SharePoint 2817429​ Setting custom, non-English outcomes in web pages on tasks in a workflow fails to set the value.
SharePoint 2817429​ Configurations of SharePoint using Azure Hybrid mode and Workflow Manager together can cause workflow callbacks to fail.
SharePoint 2817429​ Workflow task processes on wiki pages won't start.
SharePoint 2817429​ Workflows won't wait for changes to content approval status fields.
SharePoint 2817429​ E-mails generated by workflow cannot be disabled for approvals in SharePoint workflows.
SharePoint 2817429​ Workflows may fail to send an e-mail or send too many e-mails.
SharePoint 2817429​ Association variables do not update correctly for auto-start workflows.
SharePoint 2817429​ A KeyNotFoundException error may occur in a workflow when the associated task list uses unique permissions.
SharePoint 2817429​ Incomplete tasks are deleted when workflow task activities complete.
SharePoint 2817429​ Task activity is suspended when the task is completed using app-only credentials.
SharePoint 2817429​ An error that says "This task could not be updated at this time" occurs when trying to complete a workflow task using the "Open this task" button in Outlook.
SharePoint 2817429​ A workflow doesn't respond properly when waiting for changes in specific types of list columns, such as Boolean, Date Time, and User.

Come sempre il service pack in questione contiene anche tutti gli aggiornamenti fino a Gennaio, quindi eventualmente potete solo installare gli aggiornamenti di Febbraio se eravate allineati (anche se consiglio di installare SP1).

Qua sotto la lista di tutti i pacchetti scaricabili.

C'è da notare bene che il service pack 1 di Project Server non contiene il service pack 1 di SharePoint, quindi bisogna prima installare l'SP1 di SharePoint e poi quello di Project Server.
Una volta installato l'aggiornamento la versione del vostro SharePoint dovrebbe essere: 15.0.4569.1506.

Community Days 2014: the day after

Grandissimo evento come sempre.

Quest'anno per me é finito un giorno in anticipo per degli impegni lavorativi, ma ho fatto il pieno anche così.

Ho fatto il pieno di contenuti, di alto livello come sempre, ma anche di tante bravissime e simpaticissime persone che quest'anno mi hanno anche permesso di far parte dello staff.

Credo che la foto che raccolga la sintesi di questi giorni, sia questa sotto.

Per chi non lo sapesse io sono quello appollaiato sulle spalle di Bochicchio. :)

 

mRemoteNG - un tool per sistemisti e "SharePointer"

Chi come me lavora su SharePoint tutto il giorno avrà sicuramente la necessità di lavorare in desktop remoto per la maggior parte del tempo.
Per fare i deploy, per controllare le macchine, per aggiornamenti o addirituttura per sviluppare direttamente su delle macchine virtuali nella farm aziendale.
L'applicazione di Windows per i desktop remoti è molto comoda e funziona bene, ma gli ho sempre trovato qualche difetto di usabilità, se utilizzata in questo modo.
Ad esempio per lavorare bene bisogna usarla a tutto schermo e in questo modo perdiamo il controllo del "nostro" desktop e quindi siamo sempre costretti a ridurre a icona la macchina remota per controllare la posta, per leggere un documento di specifiche e così via.
Un altro difetto è quello di doversi ricordare i nomi delle macchine, gli indirizzi ip e utente e password delle macchine remote. Quando ne usiamo tante, questo può diventare un problema.

Per tutta questa serie di motivi, io consiglio di utilizzare mRemoteNG. E' un programma free ed opensource (se siete curiosi di andare a vedere come è scritto) per la gestione dei desktop remoti.
Questo tool permette di organizzare le connessioni remote in cartelle e in sottocartelle (io di solito divido per cliente) e vi permette di salvare le credenziali di accesso insieme ad altri parametri di connessione.
Con la sua grafica a tab potete tranquillamente switchare da un desktop remoto all'altro e sapere qualche macchina avete aperto controllando i tab stessi o lo stato della connessione sul menu ad albero di sinistra.
Un'altra cosa che mi è piaciuta molto è che salva tutte queste informazioni su un file xml e se, come me, lo mettete su OneDrive avete sempre a disposizione i vostri desktop remoti da qualsiasi pc.

Supporta anche altri tipi di connessione, oltre a quella RDP, che per ora non ho mai usato perchè non mi sono servite, come Putty, VNC e TelNet. 

Loggarsi come "altro utente" in SharePoint 2013

In SharePoint 2013 è stata tolta la voce di menu "Sign in as Different User" o "Entra con un altro utente" nel caso di installazione in italiano.
Per fortuna però la funzionalità è rimasta.
Per ottenere lo stesso tipo di risultato, possiamo agire in due modi.
Il più semplice è quello di inserire nel browser, dove la root del nostro sito il link "_layouts/AccessDenied.aspx?loginasanotheruser=true".
Per rendere disponibile agli utenti finali questa funzionalità, invece è possibile creare una custom action da inserire nel menu dell'utente di SharePoint.

Da Visual Studio 2013 (o 2012), creare un Progetto "SharePoint 2013 - Empty Project", inserire un nome e premere "Ok"

A questo punto aggiungere un nuovo elemento al progetto di tipo "Module" e dargli un nome (in questo caso "LoginMenuItem").

Adesso basta sostituire il contenuto del file "elements.xml" con il seguente xml.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction
    Id="LoginAsDifferentUser"
    GroupId="PersonalActions"
    Location="Microsoft.SharePoint.StandardMenu"
    Sequence="100"
    Title="Loggati come un altro utente" >
    <UrlAction Url="~site/_layouts/AccessDenied.aspx?loginasanotheruser=true" />
  </CustomAction>
</Elements>

Non ci sono altre operazioni da fare, quindi basta fare il deploy della soluzione per ottenere il seguente risultato.

In allegato potete trovare il progetto di esempio.

LoginAsDifferentUser.zip (150,70 kb)

Inviare una mail con Hotmail in C#

Un piccolo script utile per inviare una mail utilizzando il server smtp di Hotmail (e non).
Ho scritto volantariamente con Hotmail perchè con queste impostazioni è già pronto per utilizzare i server SMTP di Microsoft.

Se invece volessimo utilizzare il server SMTP di Google, basta sostituire il server con "smtp.gmail.com". Per il server di Yahoo! invece sostituire il server con "smtp.mail.yahoo.com".

            string from = "from@email.it";

            string to = "to@email.it";

            MailMessage mail = new MailMessage();
            mail.To.Add(to);
            mail.From = new MailAddress(from, "Display Name", System.Text.Encoding.UTF8);

            mail.Subject = "This is a test mail";
            mail.SubjectEncoding = System.Text.Encoding.UTF8;
            mail.Body = "This is Email Body Text";
            mail.BodyEncoding = System.Text.Encoding.UTF8;
            mail.IsBodyHtml = true;
            mail.Priority = MailPriority.Normal;

            SmtpClient client = new SmtpClient() { Port = 587, Host = "smtp.live.com", EnableSsl = true };

            client.Credentials = new System.Net.NetworkCredential("emailfrom@gmail.com", "password");

            try
            {
                client.Send(mail);
                Console.Write("Email sento to: {0}", to);
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

 

Configurare un dominio con Windows 2012 Server

In Windows 2012 dcpromo è stato rimosso.
Questa era una utility per installare o rimuovere Active Directory Domain Services sul server.

Quindi per configurare un dominio in Windows Server 2012, adesso dobbiamo installare il ruolo AD DS dal Server Manager.

Cliccare su "Add roles and features".

 

In questa schermata viene chiesto di controllare di avere i diritti di amministrazione e gli ultimi aggiornamenti installati.
Fare click su Next.

Come tipo di installazione selezionare "Role-based or Feature-based Installation".

 

Nella schermata "Server Selection" selezionare "Select a server from the server pool".

 

A questo punto, selezionare la seconda voce della lista "Active Directory Domain Services" e nel popup che si apre premere sul pulsante "Add Features".

Nella nuova schermata premere "Next".

 

Premere di nuovo "Next".

 

Una volta cliccato su "Install" la procedura di installazione parte e vengono scaricati da internet gli eventuali file necessari.

 

 

Una volta finita la procedura di installazione, fare click sul pulsante "Close" oppure cliccare su "Promote this server to a domain controller".

 

 

Nella schermata "Deployment Configuration" selezionare "Add a new forest" e inserire un nome al dominio comprensivo di estensione. Di solito viene inserito ".local".
Fare click su "Next".

 

Inserire una password complessa tenendo conto delle regole di sicurezza.

 

Modificare se necessario il NetBIOS domain name e cliccare su "Next".

 

Modificare i path di AD DS se necessario e fare click su "Next".

 

Ricontrollare le impostazioni finora inserite ed eventualmente salvare lo script PowerShell per eseguire le stesse operazioni su un nuovo server cliccando sul pulsante "View Script".
Dopo cliccare su "Next".

 

Se i prerequisiti sono stati tutti superati, risolvere gli evenutali warning ed errore e fare click su "Install".

 

Dopo pochi minuti (a seconda della velocità del server) l'installazione finirà e verrà chiesto di eseguire un riavvio del server.
Una volta effettuato basterà loggarsi con l'utente Administrator (a questo punto di dominio) per accedere al server ed eventualmente gestire le impostazioni del Domain Controller appena creato.

 

WPDev Fusion - una nuova community per Windows Phone

Dopo i successi degli eventi autunnali/invernali riguardo a Windows Phone delle varie community, ma soprattutto della Windows Phone Week, il 2014 per noi sviluppatori inizia con una bella notizia.
Infatti, cinque MVP su Windows Phone, hanno creato una nuova community di cui per ora sappiamo ancora poco ma che parte subito alla grande con un evento il 22 gennaio.
Le informazioni sulla community le potete trovare direttamente sul sito ufficiale.

Per l'evento invece potete andare direttamente sulla pagina di registrazione https://wpdevfusion.eventday.com/, dove oltre alle informazioni per registrarsi, potete anche trovare l'agenda dell'evento dettagliata con tutti gli argomenti trattati.

Tra gli speaker e i fondatori di questa nuova community c'è anche Matteo Pagani a cui faccio un grandissimo in bocca al lupo, sia per l'evento, sia per questa nuova avventura.