Il presente articolo è stato tradotto automaticamente.
TFS
Creazione e convalida di applicazioni Windows Store con Team Foundation Service
Disponibile in versione finale dal ottobre 2012, servizio Team Foundation , la versione cloud di Visual Studio Team Foundation Server (TFS), offre una serie di caratteristiche che possono aiutare a fornire software di qualità. E non è nessuna grande salto a immaginare il software che stai pensando di sviluppare riguarderà probabilmente Windows 8.
Forse vi starete chiedendo se è possibile combinare il potere dei due prodotti, utilizzare il servizio Team Foundation per costruire applicazioni Windows Store. Purtroppo, questo non è possibile, fuori dalla scatola, a causa di alcune limitazioni che si parlerà più avanti in questo articolo. Tuttavia, inoltre ti mostrerò i passi necessari per aggirare questo problema e vi aiutano a convalidare Windows Store apps durante il processo di compilazione.
In primo luogo, diamo un rapido sguardo al servizio Team Foundation .
Panoramica del servizio Team Foundation
Come un servizio basato su cloud, Team Foundation servizio consente agli sviluppatori di accedere alle funzionalità offerte da TFS senza il fastidio di dover installare e gestire. Basta registrarsi (gratis!) a bit.ly/ZusqUY e si è pronti ad andare.
Tra i servizi offerti dal prodotto, sarete probabilmente concentrarsi su tre caratteristiche importanti per sviluppare e distribuire software di alta qualità:
Source Code Management è possibile utilizzare la funzionalità di controllo di origine con i vostri strumenti attuali e la lingua preferita — praticamente qualsiasi tipo di file (c#, C++, HTML, PHP, Java e altro ancora) può essere gestito dal controller di origine. Se si utilizza un IDE come Visual Studio o Eclipse, è possibile continuare a utilizzarlo per sviluppare le applicazioni e a controllare i tuoi file in del controllo del codice sorgente.
L'architettura di controller fonte fornisce un'area di lavoro locale che memorizza una copia locale del codice sorgente. In modalità disconnessa, in questa area di lavoro vengono eseguite tutte le modifiche. Quando ti riconnetti, semplicemente verificare nel codice per spingerlo verso il server, mantenendo la storia completa di tutte le versioni, quindi è possibile tenere traccia e annullare le modifiche.
Collaborazione Team Foundation servizio consente agli sviluppatori di lavorare meglio insieme, principalmente tramite uno strumento chiamato la scheda attività. La scheda attività è accessibile da qualsiasi browser moderno che consente di creare cruscotti personalizzati. Si utilizza la scheda attività per gestire informazioni su elementi di lavoro, lo stato di compilazione, risultati di test e così via, come mostrato Figura 1.
Figura 1 esempio Dashboard per servizio Team Foundation
Build Service ancora in anteprima al momento della stesura di questo articolo, il servizio di compilazione è basato su Team Build, è parte del TFS 2010, che fornisce la compilazione automatizzata nel cloud.
Tutte le funzioni standard di Team Build possono essere utilizzate da Build Service, inclusa l'integrazione continua, tutte le sere costruisce e gated check-in si basa. Inoltre, utilizza il modello di compilazione è completamente personalizzabile. C'è anche un modello "ready to go" per fare la distribuzione continua su Windows Azure (è possibile verificare nel codice del controllo del codice sorgente e vedere gli aggiornamenti sui siti Web di Windows Azure).
Il servizio di compilazione è ospitato su un server di generazione distribuito con Windows Server 2008 R2, Team Build, Visual Studio 2010 o successivamente e di più (vedi l'elenco completo dei software necessari e opzioni in fondo a questa pagina: bit.ly/12Sf99Z). La configurazione di default è buona per la maggior parte delle applicazioni — tranne Windows Store apps. Come si può vedere Figura 2, Windows Store apps hanno bisogno di essere costruita su Windows 8 (o Windows Server 2012) e queste non sono installate sul server di compilazione.
Figura 2 edificio Windows Store Apps su Team Foundation servizio è non è possibile, fuori dalla scatola
Non così, come osservato in precedenza, creazione di applicazioni Windows Store con servizio Team Foundation è possibile fuori dalla scatola. Ma, come si vedrà, c'è una soluzione. In sostanza, la soluzione consiste di installare un computer Windows 8 che diventerà un nuovo agente di compilazione, dedicato a Windows Store apps, per servizio Team Foundation . Ti mostrerò come implementarlo.
Building Windows Store Apps con servizio Team Foundation
Qui è uno sguardo i passi necessari per creare applicazioni Windows Store utilizzando il servizio Team Foundation .
Installare il servizio di compilazione in primo luogo, è necessario un computer che esegue Windows 8. Questo può essere un fisico o una macchina virtuale (VM); non è importante, purché la macchina è accessibile da Internet. Quindi, installare TFS 2012 su quella macchina. Si noti che l'installazione di TFS non significa che sarà configurato e pronto all'uso. L'unico motivo che si sta installando deve essere in grado di configurare il servizio di compilazione. Non è necessario avere un Server di applicazione Team Foundation , come avete quello dal servizio Team Foundation .
Una volta installato il servizio di compilazione, è possibile configurarlo utilizzando un insieme di progetti team dedicato. In questo caso, perché non impostare altri componenti TFS e si desidera utilizzare il servizio Team Foundation , specificare l'insieme di progetti team disponibile con l'account del servizio Team Foundation e terminare la configurazione, come mostrato Figura 3.
Figura 3 l'installazione Team Foundation Build Service in un insieme di progetti Team dedicato
Configurazione del servizio costruire per la parte successiva, è necessario comprendere alcune nozioni di base su TFS e la sua architettura di compilazione.
Ogni TFS ha un set di controller di compilazione dedicato. Un controller di compilazione è l'endpoint che riceverà la richiesta di compilazione ed eseguirlo utilizzando agenti di compilazione dedicato. L'agente di compilazione fa il lavoro più importante della compilazione: Ottiene i file dal controllo del codice sorgente, viene compilato il codice esegue unit test e così via.
Team Foundation Servizio viene fornito con un controller dedicato costruire — il controller di compilazione ospitato — così si potrebbe pensare devi solo creare un nuovo agente per eseguire con questo controller. Purtroppo, è possibile allegare un agente di compilazione on-premise a un controller di compilazione ospitato. È necessario scegliere un altro controller di compilazione o creare un nuovo controller di compilazione.
Per farla semplice, creiamo uno nuovo, come mostrato Figura 4.
Figura 4 creazione di un nuovo Controller di compilazione
Una volta che il controller è installato e funzionante, il passo successivo è di istituire un nuovo agente dedicato alla costruzione di Windows apps Store. Creazione di un nuovo agente di compilazione è semplice come cliccando sul link nuovo agente e quindi compilando i campi. In un ambiente di produzione reale, si potrebbero avere più agenti per il tuo controller di compilazione, quindi per essere sicuri che Windows Store apps sarà costruita solo da agenti in esecuzione su Windows 8, aggiungere un tag dedicato come mostrato Figura 5. Questo non è obbligatorio, ma quando si crea la definizione di compilazione più tardi, sarete in grado di specificare questo tag per garantire che solo questo agente verrà utilizzato per il processo di compilazione.
Figura 5 creazione di un nuovo agente di compilazione
Prima di passare alla parte successiva, è necessario andare alla proprietà della Build Service e impostarlo per eseguire in modo interattivo. Questo passaggio non è obbligatorio se si desidera solo per costruire applicazioni Windows Store. Ma se si desidera convalidare le vostre applicazioni, Team Foundation Service e il servizio di compilazione sarà necessario installare e lanciare sul computer di compilazione, e questo non può essere fatto se il servizio di compilazione non è configurato per eseguire in modo interattivo.
Sulla pagina di compilazioni in Visual Studio Team Explorer, fare clic su azioni, quindi su gestire controller di compilazione per aprire una finestra che mostra un elenco di tutti i controller di compilazione (con i loro agenti dedicati) installato. Se la configurazione è stata completata, si dovrebbe vedere il nuovo controller e agente.
Preparare l'agente di costruire per eseguire Unit test se il computer che ospita l'agente di compilazione verrà utilizzato per eseguire unit test, ci sono due altri passi che devono essere eseguite. In primo luogo, una licenza di sviluppatore Windows 8 deve essere installata sul computer. Licenze sviluppatore sono gratuite, hanno bisogno di essere rinnovati ogni 30 giorni (o 90 giorni), se avete un account Windows Store e si può ottenere come molti come è necessario se si dispone già di un account di Microsoft. Ci sono due modi per acquisire una licenza di sviluppatore. Sul computer di compilazione, è possibile creare semplicemente un app Store di Windows, che si apre una finestra di dialogo da cui è possibile ottenere una licenza valida. Se non volete creare una falsa applicazione sul computer di compilazione, è possibile eseguire il seguente comando Windows PowerShell per ottenere la stessa finestra di dialogo:
C:\PS> Show-WindowsDeveloperLicenseRegistration
Dopo aver ottenuto la licenza di sviluppatore, è necessario generare e installare un certificato di prova di unità (dal progetto di codice che contiene i test di unità che si desidera eseguire) sull'agente di compilazione. Per questo passaggio, generare un pacchetto dell'applicazione sul computer dello sviluppatore. In Visual Studio, fare clic su Archivio | Creare pacchetto App. Questo crea una cartella contenente l'app Store di Windows (in un file con l'estensione .appx) e relativo certificato.
Per installare il certificato sul computer di compilazione, aprire un prompt dei comandi come amministratore e digitare il seguente comando:
certutil -addstore root certificate_file
Si noti che raddbdir è il percorso per il file di certificazione.
Edificio Windows Apps Store una volta che il controller e l'agente sono in esecuzione, creazione di applicazioni Windows Store è lo stesso di costruire altri tipi di applicazioni. Basta impostare una nuova definizione di compilazione e specificare che si desidera utilizzare il nuovo controller di compilazione che appena istituito. Per essere sicuri che il processo di compilazione utilizzerà la build agente in esecuzione su Windows 8, nella scheda processo della definizione di compilazione, seleziona il tag che indicato quando creato l'agente di compilazione (vedi Figura 6).
Figura 6 creazione del processo di compilazione utilizzando il Tag specificato
Una volta fatto questo, Accodamento di una compilazione di nuova utilizzando la definizione di compilazione che appena creato si lancia e, grazie al tag specificato, si può essere sicuri che della compilazione viene eseguita utilizzando l'agente giusto, in modo che non mancherà.
Come si può vedere, costruire un app Store di Windows utilizzando il servizio Team Foundation è piuttosto semplice ed estremamente potente, e si può personalizzare completamente il processo di compilazione. Tuttavia, c'è ancora un problema. Anche se la compilazione ha esito positivo, esso non significa che l'applicazione verrà eseguita correttamente o addirittura che passerà tutti i passaggi fondamentali per la convalida. Successivamente, ti spiego come è possibile convalidare l'applicazione e come indicare agli utenti (attraverso il report di compilazione) passato la convalida sia fallito.
Convalida Windows Store Apps durante Team Build
Come probabilmente sapete, per essere pubblicato nell'archivio di Windows, un'applicazione deve essere certificata. Cioè, deve passare la procedura di convalida richiesto. È possibile convalidare le applicazioni durante il processo di compilazione. Questo può essere eseguito facilmente aggiungendo semplicemente un evento post-generazione, che lancerà il Windows App certificazione Kit (ACK) per convalidare l'applicazione. Ma, fuori dalla scatola, la convalida non notifica agli utenti dei risultati. Ti mostrerò come estendere il processo di compilazione per includere questo passaggio.
Per integrare esecuzione ACK durante il processo di compilazione, è necessario modificare il file di progetto per aggiungere i seguenti PostPackageEvent:
<Target Name="PostPackageEvent" AfterTargets="_GenerateAppxPackage">
<Exec Command="'$(TargetPlatformSdkPath)App Certification Kit\appcert.exe' reset"/>
<Exec Command="'$(TargetPlatformSdkPath)\App Certification Kit\appcert.exe' test -apptype windowsstoreapp -AppxPackagePath '$(FinalAppxPackage)' –reportoutputpath '$(outdir)\ValidationResult.xml'" />
<Exec Command="copy '$(userprofile)\appdata\Local\Microsoft\appcertkit\ValidationResult.htm' '$(outdir)\ValidationResult.htm'"/>
</Target>
Quando viene eseguito, il codice verrà creato il file ValidationResult.html, che contiene i risultati della convalida eseguita da ACK. Se sei connesso al server di compilazione quando la compilazione viene eseguita, vedrai che viene avviata l'applicazione per essere convalidati da ACK. Questo è normale; l'app è installato, convalidato e poi rimosso automaticamente quando il test è finito. Ricordate che è configurato il servizio di compilazione per eseguire in modo interattivo, che è ciò che consente all'applicazione di essere installato ed eseguito. Se non avesse fatto questo, vuoi avere verificato un errore durante la compilazione.
Il processo di compilazione non è influenzato dai risultati della convalida, così gli utenti devono essere in grado di controllare i risultati del test per sapere se l'applicazione presenta errori di convalida. Fortunatamente, è possibile migliorare il report di compilazione per consentire agli utenti di sapere se la convalida rilevati eventuali errori. Vediamo come personalizzare i report di compilazione per integrare i risultati della convalida dello strumento ACK.
Personalizzazione della relazione costruire ACK crea un HTML e un file XML e li salva nella cartella si sceglie. È possibile utilizzare questo file XML per creare un'attività di workflow personalizzato che modificherà il report di compilazione per comunicare agli utenti i risultati della convalida.
Il codice per creare quest'attività è abbastanza semplice. Trova il file XML (che contiene i risultati della convalida), legge il file per trovare il valore dell'attributo "OVERALL_RESULT" e restituisce tale valore. Figura 7 Mostra il codice che crea l'attività CheckWackResultsActivity.
Figura 7 CheckWackResultsActivity
[BuildActivity(HostEnvironmentOption.All)]
public sealed class CheckWackResultsActivity : CodeActivity<bool>
{
[RequiredArgument]
public InArgument<string> DropLocation { get; set; }
[RequiredArgument]
public InArgument<string> WackResultsFilename { get; set; }
[RequiredArgument]
public InArgument<string> WackReportFilename { get; set; }
public OutArgument<string> WackReportFilePath { get; set; }
// If your activity returns a value, derive from CodeActivity<TResult>
// and return the value from the Execute method.
protected override bool Execute(CodeActivityContext context)
{
string dropLocation = context.GetValue(this.DropLocation);
string wackResultsFilename =
context.GetValue(this.WackResultsFilename);
string wackReportFilename = context.GetValue(this.WackReportFilename);
var dropLocationFiles = Directory.GetFiles(dropLocation, "*.*",
SearchOption.AllDirectories);
if (dropLocationFiles.Any())
{
var resultFile = dropLocationFiles.FirstOrDefault(
f => Path.GetFileName(f).ToLowerInvariant() ==
wackResultsFilename.ToLowerInvariant());
if (!string.IsNullOrWhiteSpace(resultFile))
{
var xDocument = XDocument.Load(resultFile);
var reportElement = xDocument.Element("REPORT");
if (reportElement != null)
{
var resultAttribute = reportElement.Attribute("OVERALL_RESULT");
if (resultAttribute != null)
{
context.SetValue(this.WackReportFilePath,
Path.GetDirectoryName(resultFile));
var validationResult = resultAttribute.Value;
// Fail or Pass
if (validationResult.ToLowerInvariant() == "fail")
{
return false;
}
return true;
}
}
}
throw new InvalidOperationException(
"Unable to find the Windows App Certification Kit results file!");
}
else
{
throw new InvalidOperationException(
"There are no files in the drop location!");
}
throw new InvalidOperationException(
"Unknow error while checking the content of the Windows App
Certification Kit results file!");
}
}
Per impostazione predefinita, le attività di compilazione eseguite su agenti di compilazione. Ma ci potrebbero essere alcuni scenari dove si desidera che l'attività di eseguire fin dal primo passo, anche prima dell'inizio della compilazione, o come l'ultimo passo prima della compilazione è finalizzata. Per questo tipo di flessibilità, è necessario avere l'attività in esecuzione sul controller, non sull'agente. È possibile farlo utilizzando l'attributo BuildActivityAttribute, che prende come argomento il valore di enumerazione HostEnvironmentOption.All (come si può vedere Figura 7). Si noti che se non si utilizza l'Host correttoEnvironmentOption opzione, si otterrà un errore durante il processo di compilazione.
La classe CheckWackResultsActivity eredita da codiceattività <bool> modo che il valore di risultato può essere utilizzato per visualizzare il messaggio corretto nel report del build. Per visualizzare questo messaggio, è possibile utilizzare una nuova attività disponibili in TFS 2012: WriteCustomSummaryInfo. Questa attività è molto utile se si desidera aggiungere un messaggio alla compilazione relazione perché, invece di aggiungere testo semplice, ti permette di aggiungere una categoria dedicata nel report del build.
È necessario specificare le seguenti proprietà:
- Messaggio, che è il testo da visualizzare nel report
- SectionDisplayName, che corrisponde all'intestazione della sezione
- SectionKey, il valore unico della sezione
- SectionPriority, che definisce la posizione della nuova sezione del report (0 è la massima priorità e le sezioni standard partono da 100)
Quindi, utilizzando la nuova attività e WriteCustomSummaryInfo, sono in grado di modificare il processo di compilazione per verificare i risultati della convalida e aggiungere una nuova sezione nel report del build. Figura 8 Mostra il codice XAML del processo di compilazione modificata.
Figura 8 modificato costruire processo
<Sequence DisplayName="Windows 8" sap2010:WorkflowViewState.IdRef="Sequence_4">
<Sequence.Variables>
<Variable x:TypeArguments="x:Boolean" Name="WackToolRanSuccessfully" />
<Variable x:TypeArguments="x:String" Name="WackReportFilePath" />
</Sequence.Variables>
<c:CheckWackResultsActivity DropLocation="[DropLocation]"
sap2010:WorkflowViewState.IdRef="CheckWackResultsActivity_3"
Result="[WackToolRanSuccessfully]"
WackReportFilePath="[WackReportFilePath]"
WackReportFilename="ValidationResult.html"
WackResultsFilename="ValidationResult.xml" />
<If Condition="[Not WackToolRanSuccessfully]"
sap2010:WorkflowViewState.IdRef="If_4">
<If.Then>
<Sequence sap2010:WorkflowViewState.IdRef="Sequence_6">
<mtbwa:WriteCustomSummaryInformation
sap2010:WorkflowViewState.IdRef=
"WriteCustomSummaryInformation_2"
Message="['Windows App Certification Kit ran with errors.
Click [here](' & WackReportFilePath & ') to
access the folder containing the report.']"
SectionDisplayName="Windows 8" SectionKey="Windows8"
SectionPriority="75"
mva:VisualBasic.Settings=
"Assembly references and imported namespaces
serialized as XML namespaces" />
<mtbwa:WriteBuildError
sap2010:WorkflowViewState.IdRef="WriteBuildError_1"
Message="Windows App Certification Kit ran with errors." />
<mtbwa:SetBuildProperties
CompilationStatus=
"[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]"
DisplayName="Set Status and CompilationStatus to Failed"
sap2010:WorkflowViewState.IdRef="SetBuildProperties_1"
mtbwt:BuildTrackingParticipant.Importance=
"Low" PropertiesToSet="CompilationStatus" />
</Sequence>
</If.Then>
<If.Else>
<mtbwa:WriteCustomSummaryInformation
sap2010:WorkflowViewState.IdRef="WriteCustomSummaryInformation_1"
Message="['Windows App Certification Kit ran with success.
Click [here](' & WackReportFilePath & ') to
access the folder containing the report.']"
SectionDisplayName="Windows 8" SectionKey="Windows8"
SectionPriority="75"
mva:VisualBasic.Settings=
"Assembly references and imported namespaces
serialized as XML namespaces" />
</If.Else>
</If>
</Sequence>
Si noti che nel Figura 8 se la convalida non riesce, lo stato di compilazione è impostato su "Failed" impedire la continua il processo di compilazione. Questo non è obbligatorio e si può rimuovere se si preferisce sempre terminare il processo di compilazione, indipendentemente dai risultati di convalida.
Ora, ogni volta che viene attivata una compilazione, nel report di compilazione viene visualizzata una nuova sezione dedicata a Windows 8, che mostra il risultato della convalida (vedi Figura 9).
Figura 9 la nuova sezione nel Report del Build mostrando convalida risultati
Utilizzando WriteCustomSummaryInfo, il report di compilazione può essere migliorato con testo e collegamenti solo. Se una modifica più complessa è necessario (ad esempio, aggiungendo un'immagine), è ancora possibile applicare le tecniche utilizzate con TFS 2010.
Ci sono un sacco di possibilità per personalizzare il modello di processo di compilazione per Windows Store apps, e la buona notizia è che tali personalizzazioni sono praticamente la stessa, sia per servizio Team Foundation e on-premise TFS.
Thomas Lebrun è capo tecnico all'infinito Square, un partner Microsoft francese lavorando sulle tecnologie tra cui Windows 8/Windows Phone, Team Foundation Server e SharePoint. L'autore di due libri francesi circa Windows Presentation Foundation e il pattern Model-View-ViewModel, Lebrun è anche un normale altoparlante durante gli eventi di francesi. Seguire il suo blog a blog.thomaslebrun.net e seguirlo su Twitter a twitter.com/thomas_lebrun.
Grazie all'esperto tecnica seguente per la revisione di questo articolo: Chris Patterson (Microsoft)