febbraio 2010 - Posts
Nell’ultimo post ci siamo lasciati con installazione in corso. Ho lasciato il tutto nella notte e la mattina:
Ci vengono riepilogate anche le operazioni effettuati sui componenti dipendenti, come ad esempio IIS o le porte aperte sul firewall per l’interazione con i vari Site SharePoint e Report.
Ritornando alla Administration Console in qualunque momento vedremo lo stato della nostra configurazione:
Installazione del Build Service è altrettanto semplice (conviene usare un account specifico, come da sempre si fa su Windows).
Nel primo passo si possono scegliere i settaggi e il numero dei Build Agent (nella versione 2010 le build possono essere eseguite in parallelo su più macchine)
Scelta la configurazione sul Build Agent si passa alla configurazione principale: account da usare, porte da aprire:
Al termine viene visualizzato un riepilogo per verificare i parametri rispetto alla configurazione della macchina, ai prerequisiti:
In meno di 3 minuti, sulla mia macchina virtuale, tra l’altro monata su un PC desktop appare il riepilogo generale sempre molto piacevola da vedere :-)
E’ divertente vedere che un anno e mezzo fa avevo scritto 4 articoli basati sulla CTP di PDC 2008 il cui contenuto è ancora valido, ma vedere anche le differenze apportate nella grafica.
Intro Parte 1 : http://blogs.devleap.com/articolidevleap/archive/2008/10/17/visual-studio-team-system-2010-primo-contatto.aspx
Intro Parte 2: http://blogs.devleap.com/articolidevleap/archive/2008/10/26/visual-studio-team-system-2010-primo-contatto-parte-2.aspx
Parte 3 Testing & Dubugging: http://blogs.devleap.com/articolidevleap/archive/2008/11/30/visual-studio-2010-primo-contatto-parte-3.aspx
Parte 4 Architecting Apps: http://blogs.devleap.com/articolidevleap/archive/2008/12/03/visual-studio-2010-primo-contatto-parte-4.aspx
Buona lettura.
Al termine dell’installazione di TFS (nel mio caso con Build Server), al posto di fare i famosi 18 o 22 passi manuali di installazione della versione 2008, ecco un vero setup come promesso sin dalla PDC 08:
Primo passo
Fatto Next occorre creare un account per l’interazione con SharePoint e Reportin Services. Il passo successivo del wizard chiede proprio questo:
Ci viene giustamente segnalata l’assenza di componenti “fondamentali” come ad esempio Reporting Services. Esiste anche, come indicato nel warning un Advanced Install Wizard per gestire installazioni meno lineari.
Dopo aver installato Reporting Services si può proseguire con il wizard, che è abbastanza furbo da controllare non solo il setup dei componenti importanti, ma anche la loro configurazione.
E’ possibile configurare e gestire in generale i servizi TFS da uno strumento centralizzato. Ad esempio interrompendo il setup per installare/configurare Reporting Service possiamo riaccedere alla confeigurazione tramite TFS Central Configuration:
In un altro server di test l’installazione non è invece andata a buon fine: il motivo si scopre dal file di log: E’ COLPA DI FRONTPAGE !!!!
[Error @20:21:30.613]
Exception Message: Invalid namespace (type ManagementException)
Exception Stack Trace: at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementScope.InitializeGuts(Object o)
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObjectSearcher.Initialize()
at System.Management.ManagementObjectSearcher.Get()
at Microsoft.TeamFoundation.Admin.RealAdminExternals.Microsoft.TeamFoundation.Admin.IAdminExternals.RunWqlQuery(String queryScope, String queryString)
at Microsoft.TeamFoundation.Admin.VerifyHelpers.GetCountOfWqlQuery(WqlQuery query)
at Microsoft.TeamFoundation.Admin.VerifyNoFrontPage.Verify()
[Error @20:21:30.614] !Verify Error!: TF255437: An error occurred while querying the Windows Management Instrumentation (WMI) interface on the following computer: metello. The following error message was received: Invalid namespace .
La colpa in realtà era dell’installazione della macchina: mancava IIS 6 WMI come componente e quindi il wizard si fermava in quando non era in grado di fare la verifica proprio sul componente FPExt…
Fatte queste operazioni preliminari: leggere la setup guide per i prerequisiti completi, si procede.
Prima di arrivare all’installazione vera e propria, il wizard esegue altri controlli segnalandoci ad esempio la nascita di un nuovo Application Pool per SharePoint admin, piuttosto che warning sul dimensionamento della macchina.
Prossimo step: fare un upgrade di un TFS esistente: penso di aspettare la verisone RTM prima di provarci, visto che, anche se non ho avuto problemi, è pur sempre un RC.
Dopo aver installato la versione 1.1 dei Windows Azure Tools su Visual Studio Ultimate 2010 RC, è sufficiente creare un progetto di tipo Cloud Service per ottenere (anche senza fare niente sul progetto) il seguente errore:
Il problema era presente anche nella Beta1 su progetti di tipo DLL, ma era sparito nella Beta2 (almeno non mi è mai capitato).
Il problema è che la configurazione di default di un progetto Cloud Service è impostata su “Platform=HPD” come indica chiaramente il messaggio di errore.
La soluzione è aggiungere alla configurazione tale configurazione al file .csproj del progetto Cloud. Per fare prima si può fare
1) Unload del progetto (direttamente dal progetto, tasto destro)
2) Edit del progetto (sempre da progetto, tasto destro)
3) Localizzare la configurazione Debug e Release e inserire “|HPD” al posto di AnyCPU
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
Ovviamente questo tappo serve se avete solo il progetto Cloud. Se occorre, come è probabile, referenziare altre Dll che hanno bisogno di AnyCPU come Platform, conviene creare una nuova voce di configurazione.
Hope useful
Sempre sul progetto di cui abbiamo parlato in post precedenti stiamo valutando l’introduzione di ADO.NET EF 4.0 al posto dell’attuale Linq to SQL: la scelta iniziale era caduta su L2S per creare velocemente uno strado DAL che veniva poi disaccoppiato dal layer Dal generico superiore che incapsula tutte le chiamate.
Visto che il database è 2 TB occorre stare un attimo attenti: anche L2S potrebbe rappresentare un problema di performance, ma visto quanto costa creare il modello possiamo permetterci di valutarlo prima di riprendere il nostro generatore di codice con il buon vecchio DataReader a manella.
Ovviamente stiamo sperimentando l’utilizzo di classi POCO e non. Dopo varie prove siamo arrivati a costruire il modello (tramite .tt) in automatico e ben soddisfatto del risultato ho inserito il modello .edmx nello stesso progetto Dal che contiene il modello che non usa le classi POCO.
Anche se i nomi delle classi POCO e del rispettivo modello .edmx iniziano tutte per POCO (POCOCatalog) e le classi derivate da EntityObject hanno invece i nomi reali, a runtime, sembra, che EF non riesca a eseguire il mapping durante l’esecuzione di una query.
Avevo tenuto i nomi diversi proprio per evitare di creare confusione nella scrittura dei primi test e unit test.
Visto che i nomi delle proprietà delle classi devono corrispondere a quelle del modello ho passato oltre un ora a capire perchè continuava a dare questo errore:
Mapping and metadata information could not be found for EntityType 'XXXX.POCOCatalog’
I problemi potrebbero essere
1) Nome del campo sbagliato…visto che li autogenero era impossibile, ma controllare non guasta mai
2) Non aver marcato “virtual” le proprietà collection (che servono per creare le navigation properties). Serve per Lazy Load.
Alla fine di un controllo da certosino ho deciso di partire con una cosa semplice (che mi funzionava in qualche progetto di test): ho distrutto l’edmx e l’ho ricreato con una sola Entità con 3 sole proprietà: in questo modo non potevo sbagliare. Niente da fare.
Dopo altri tentativi ho scoperto che se il progetto Visual Studio contiene due file .edmx, anche se hanno nomi diversi, viene fuori il problema.
E’ bastato spostare il modellone in un’altra dll e tutto funziona…
“The most you use it the most you love it” recitava un antico detto popolare delle mie parti :-).
Un esempio veloce per capire quanto siano utili le informazioni di debug. Sto usando Entity Framework 4.0 su un modello reale ma in un mini-form (fatto in Windows Forms) per testare alcuni comportamenti della nuova versione (Execute diretto ad esempio).
Senza Intellitrace avrei dovuto registrare da qualche parte i comandi SQL generati oppure usare il profiler di SQL Server. Con Intellitrace posso tranquillare risalire a tuti i comandi generati visto che tiene traccia anche delle chiamate a ADO.NET e compagni.
E’ semplicemente troppo comodo avere tutto sotto controllo, anche se abbiamo fatto un F10 di troppo oppure un F11 per entrare in un altro metodo: basta risalire nella storia per ritrovare subito quello che ci serve.
Al .NET Campus 2010, conferenza gratuita che terremo a Roma in collaborazione con ASPItalia e UGIdotNET, Matteo Emili terrà una sessione sulle novità dell’ambiente. Non mancate.
Potete fare riferimento a questo mio post per altre info su Intellitrace: http://blogs.devleap.com/rob/archive/2010/01/15/intellitrace-e-pinned-debug.aspx.
Ci sono informatici fortunati e informatici meno fortunati. Io forse appartengo alla seconda categoria o almeno ci sono entrato negli ultimi tempi.
Stiamo lavorando a un progetto di medie dimensioni con Visual Studio 2010 dall’inizio di gennaio. La Beta 2 sinceramente sarà crashata solo 3/4 volte considerando oltre un mese di sviluppo sommando le due persone coinvolte. L’unico problema a lavorare con la Beta 2 era la lentezza di compilazione e debug visto che la solution ha una decina di progetti al suo interno, unit test e così via.
Il 9 notte installo VS 2010 RC sperando in un incremento di performance notevole: l’incremento c’è ed è veramente apprezzabile; mi verrebbe quasi da dire che va meglio del 2008 sulla stessa macchina.
La sfiga però mi ha colpito: ogni 3/4 colpi di intellisense Visual Studio crasha. Ho scoperto che lo fa solo su alcune macchine e ovviamente ci sono rientrato :-)
Il problema arriva dalle UI Automation 3.0 API che comprendeono tablet PC…e non è il mio caso…screen reader software…e non è il mio caso…multi-touch driver…preso !
Sto lavorando con il TouchSmart proprio per avere anche il supporto Multitouch di WPF 4. In realtà le API
Soluzione:
1) Se avete un tablet occorre disabilitare il servizio Tablet: da start cercare “services”, entrare in User Account Control con Continue e disabilitare Table PC Input Service, poi fare Stop.
2) Soluzione meno elegante ma che consente di tenere i servizi del tablet (io spesso sul touchsmart scrivo direttamente sul monitor) è andare nel registry e creare la chiave KEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\General\EnableUnhandledExceptionDisplay. Creare una chiave DWORD e impostarla a 1
La soluzione 2 ha un problema nel problema. In pratica VS evita di crashare, ma vi propone la prima volta questo:

Le volte successive non viene fuori il messaggio, ma per riprendere il controllo occorre cliccare sull’editor (che ha perso il focus) prima di poter ricominciare a digitare.
A quanto ho capito il bug è già stato risolto e già inserito nel check-in che vedrà la build nella RTM, quindi non è escluso che venga proposta una patch velocemente
Sigh :-)
Ieri mi sono arrivate le prime fatture relative al traffico e compute hours di alcuni progetti su Windows Azure. Ho diviso i progetti in base ai miei account windows live in modo da suddividere anche la fatturazione.
Questa la fattura relativa al traffico dati del sito thinkahead.cloudapp.net
Mentre sotto la fattura relativa al costo computazionale:

Rilasciata da un paio di giorni la nuova versione degli strumenti per sviluppare progetti per Windows Azure.
La prima novità riguarda il supporto per Visual Studio 2010 RC (che sta per uscire). Se usate la versione Beta 2 di Visual Studio 2010 continuate a usare gli strumenti versione 1.0 di novembre !!!
Le novità che riporto direttamente dal download sono
New for version 1.1:
- Windows Azure Drive: Enable a Windows Azure application to use existing NTFS APIs to access a durable drive. This allows the Windows Azure application to mount a page blob as a drive letter, such as X:, and enables easy migration of existing NTFS applications to the cloud.
- OS Version Support: Allows a Windows Azure application to choose the appropriate Guest OS to run on in the cloud.
- Bug Fixes
- StorageClient: Expose account key from storage credentials, expose continuation tokens for pagination, and reduce maximum buffer size for parallel uploads.
- Windows Azure Diagnostics: Fix path corruption for crash dumps, OnDemandTransfer now respects LogLevelFilter.
- VS 2010: Improved packaging performance.
- VS 2010: Support for linked files in Web projects.
- VS 2010: Support for ASP.NET web project web.config transformations.
- Certificate selection lists certificates from LocalMachine\My instead of CurrentUser\My.
- Right click on Role under Roles folder to select whether to launch the browser against HTTP, HTTPS or not at all.
Il download a partire da quì http://www.microsoft.com/downloads/details.aspx?FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&displaylang=en
Al prossimo .NET Campus (13 marzo) terrò una sessione introduttiva sull'argomento.