Commentor Blog

When Quality Matters

Commentor A/S

When Quality Matters

Contact usSend mail

Recent comments

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2014

Overblik over nyheder i Team Foundation 2013

Nyheder i TFS2013 – Del 1

Microsoft Visual Studio Team Foundation Server 2013, herefter TFS2013, er netop frigivet i sin seneste udgave. Den tidligere udgave TFS2012 nåede tre updates, hvoraf de to første indeholdt større feature opgraderinger, mens den tredje hovedsagligt var en bugfix release. Yderligere kommer der en update 4 til TFS2012, der også er en release indeholdende bugfixes.

De forskellige versioner af TFS kan downloades her:

http://www.microsoft.com/visualstudio/eng/downloads

Denne blog indeholder en gennemgang af hhv. Agile Portefolio Mangement og Test Management i Web Acces, som er features, der er kraftigt udvidet. Senere dele af bloggen vil omhandle:

  • Release Management

  • GIT repository og tools

  • Team Rooms

Agile Portefolio Management

En af de nye features i TFS2013 er Agile Portefolio Management. Det er en udvidelse af backlog konceptet, hvor der ikke længere udelukkende er en enkelt backlog med tilhørende sprint backlog opdelinger, men derimod mulighed for at definere flere backlogs på baggrund af det detaljeniveau, som organisationen vil se det på. Det kan eks. være Features, der er inddelt i Epics, som igen er inddelt i PBI’er: Faetures->Epics->PBI via Parent/Child links.

Det er så muligt at definere en backlog per niveau og samtidig vælge, om man vil se det enkelte niveau alene eller om man vil se niveauet linket/mappet til det underliggende. Dette ses på følgende figur: 

 

På ovenstående ses Features linket/mappet til PBI’er.

Følgende features er bla. tilstede for at gøre dette muligt:

  • Et View, hvor det kan vælges, om man kun vil se det enkelte niveau (eks. Features) eller både niveauet og det underniveau, som det linker til (eks. PBI)

  • En mulighed for at definere flere backlogs på baggrund af en work Item type

  • Udvidelse af et work item, så man kan definere en tilhørende farve (eks. lilla for en Feature og blå for en PBI. Dette kan naturligvis redefineres, som alle andre attributter på et work item.

  • Indrykket visning af de linkede niveauer. Ovenfor er vist to niveauer, Feature->PBI, men det kan vises på alle tilgængelige niveauer, Feature->PBI->Task.

  • Yderligere er det muligt at mappe mellem de enkelte niveauer af work items via drag & drop. Dette Map view er ikke vist på ovenstående figur, da det er et screen shot fra TFS2013 Preview versionen, hvor dette endnu ikke var tilgængeligt.

Samtidig ses det at Feature work item er en ny work item type, der er tilføjet til alle de indbyggede process templates. Dvs. det gælder for både CMMI, Scrum og Agile templatene.

Sidst er de to konfigurationsfiler AgileConfiguration.xml samt CommonConfiguration.xml, som vi har været vant til fra TFS2012 nu slået sammen til en ProcessConfiguration.xml, så al konfiguration af backlogs foregår herigennem.

En række mindre forbedringer er yderligere tilgængelige:

  • Visualisere sine Work item queries via charts. Disse er pt. tilgængelige under Work|Queries, men vil i senere updates kunne tilføjes til Team Favorites også.

  • Mulighed for at paste billeder ind i beskrivelser på work items via Web Access

  • Tags er tilføjet til default kolonner i backlogs

  • Det er muligt at slette et Team Projekt fra Web Access, hvor det skulle ske via command line.

  • Desuden skal det bemærkes at rettigheder til at ændre en række konfigurationer er ændret. Eks muligheden for at tiføje til Team Favorites, tilføje team members og customisere Kanban boards.

Ser man på ovenstående nye Agile Portefolio Mangement features, så lader det stadig tilbage at ønske, at man kan se og definere backlogs på tværs af team projekter. Dvs. det er portefolio mangement på tværs af niveauer indenfor et team projekt, men ikke en fuld portefolio på tværs af alt i en team project collection. Det tilføjer naturligvis endnu en udfordring, når man skal strukturere sine team projekter. Skal man have et stort team projekt for at kunne se på tværs eller skal man have flere team projekter eller igen en mellemmodel med at globalt team projekt samt flere associerede team projekter.

Test Mangement

Test Management er udvidet kraftigt i TFS2013. Stort set alle de manglende features i test delen af Web Access er nu implementeret:

Dvs. det nu er muligt at oprette Test Planer, Test Suiter og Shared Steps.

Yderligere er det muligt under test afvikling at pause og gemme sin test afvikling og så på et senere tidspunkt åbne denne igen og genoptage testen. Det ses på følgende figur:

En anden god feature i TFS2013 er muligheden for at se sine Test Cases i et grid. Dvs. det er nemmere at bulk-redigere og man får en oplevelse tæt på den man har haft, hvis man tidligere har haft sine Test Cases i Excel. Dette ses på følgende figur:

Web Access mangler stort set kun muligheder for at kunne se sine Test Runs og analyserer disse ifht. den fulde klient (MTM – Microsoft Test Manager). De fulde dataopsamlingsmuligheder vil naturligvis ikke kunne lade sig gøre, da de kræver en installation af data adaptere etc., som web klienten netop ikke gør.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:
Categories: TFS2012 | Visual Studio
Posted by jorn.floor.andersen on Thursday, November 07, 2013 1:24 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Overblik over nyheder i Visual Studio 2013

Med denne blog post håber jeg at kunne give en oversigt over nogle af nyhederne i Visual Studio 2013 og .NET 4.5.1, med fokus på .NET udvikleren.

Visual Studio 2013, .NET Framework 4.5.1 og Team Foundation Server (TSF) 2013 er allerede tilgængeligt til download på MSDN, men lanceres officielt 13 November 2013.

.NET Framework 4.5.1

I .NET Framework 4.5.1, som er en in-place opgradering af .NET 4.5, som er præ-installeret på Windows 8.1 og som kan installeres på Windows 7 og frem, er der en del nyheder som man som Visual Studio udvikler kan drage nytte af.

64-bit Edit and Continue

Nu er det omsider muligt at ændre kode midt i en debug session af en 64-bit applikation, dette gælder både desktop og ASP.NET applikationer.

Retur værdier

Det er nu muligt at se returværdier fra metoder der returnerer kald til andre metoder direkte, via Autos vinduet.

Async debugging

Det er nu (på Windows 8.1) meget nemmere at få en overskuelig call-stack når man debugger asynkrone metoder (med async/await for eksempel)

ADO.NET idle connection resiliency

Ny feature bygget ind i ADO.NET, der automatisk forsøger at genetablere databaseforbindelser der er gået død. Du skal bare installere .NET 4.5.1 for at få denne feature.

Visual Studio 2013 IDE (udviklingsmiljøet)

Nyhederne i denne gruppe vedrører Visual Studio generelt, og knytter sig ikke til en bestemt projekt type. De fleste nyheder her gælder alle udgaver af Visual Studio.

Visual Studio indstillinger

Du kan nu, hvis du logger på Visual Studio med en Windows konto, flytte dine Visual Studio 2013 indstillinger fra maskine til maskine. Følgende indstillinger omfattes i denne omgang af dette: Udseende, tastatur genveje, startup og tekst editor indstillingerne.

Notifikationer

I tidligere versioner af Visual Studio fik du besked via en pop-up i nederste hjørne af skærmen, hvis du ikke lige så den, gik du glip af den. Visual Studio 2013 har nu et sted, hvor alle notifikationer samles, og du kan kigge på dem når du har tid og lyst. Det tilgås via et flag ikon i øverste højre hjørne af Visual Studio.

Visuel design

Visual Studio har fået en design overhaling, så nogle af de farver der forsvandt i Visual Studio 2012 er nu kommet tilbage (skønne spildte kræfter). Desuden er der nu 3 indbyggede temaer: Light, Dark og Blue.

Tekst editor forbedringer

Der er kommet nogle editor forbedringer, mange af disse kommer fra Productivity Power Tools.

  • Automatisk lukning af paranteser/tuborg

  • Flyt linie op og ned med Alt + Pil

  • Udvidet scrollbar

  • Navigate to (Ctrl +,)

  • Peek definition (Alt + F12)

  • CodeLens (Alt + nummer)


Særligt CodeLens er interessant, giver navigation fra hver eneste metode via en ekstra ”overskrift”, til TFS elementer der er relevante i konteksten, til blandt andet de metoder der refererer den aktuelle, test status, change sets, work items, code reviews. Desværre findes denne feature kun i Visual Studio Ultimate.


Nye og opdaterede projekttyper og frameworks

I Visual Studio 2013 er der support for en række nye projekttyper, jeg skal blot nævne nogle af disse.

One ASP.NET

Tidligere fandtes et væld af Web projekttyper, afhængig af den valgte teknologi. Nu er de alle slået sammen, så du kan lave en Web Applikation, og vælge de teknologier du ønsker at bruge efter behov, så som ASP.NET WebForms, ASP.NET MVC, WCF eller Web API.

Windows 8.1

Der er naturligvis support for udvikling af Windows 8.1 applikationer med VS 2013, og der er desuden kommet en masse nye APIer for udvikling af Windows 8.1 Apps.

Generelt er XAML editoren også forbedret både på brugervenlighed og hastighed.

Windows Azure SDK

Windows Azure SDKet følger nu med Vusual Studio, og er integreret I Server Explorer.

Entity Framework 6

Den seneste udgave af Entity Framework 6, med Async, Code First stored procedures, performance og mange andre forbedringer følger med VS 2013.

Der er mange andre nyheder og forbedringer, og dermed mange gode grunde til at opgradere til VS 2013.

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Wednesday, November 06, 2013 6:16 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Error when addding users to AS roles for viewing TFS data warehouse data

If the TFS data warehouse is to be accessed from e.g. Excel the user must be added to the TFSDataWarehouseReader role on the Tfs_Anaysis database.

 If this fails with: "No mapping between account names and security IDs was done" it could be beacuse of an inactive account already in the list. This can maybe be indentified by a SID being displayed instead of a user name. Remove the inactive account and it should work again.

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by jorn.floor.andersen on Tuesday, November 05, 2013 5:08 AM
Permalink | Comments (0) | Post RSSRSS comment feed

TFS2012 og kvartalsupdates. Skal jeg følge med?

Med introduktionen af TFS2012 er Microsoft gået over til en kortere release cyklus. Der releases nu større feature pakker og fejlrettelser hver tredje måned og dette uanset at hovedreleases også følger tidligere tiders cykler eller endda nu endnu kortere cykler. Hvor vi tidligere så en hovedrelease hvert andet år, så varsler den kommende TFS2013 også her om forbedringer.

For at tage et kig tilbage på hvad det har bragt os i de seneste to opdateringer samt den netop releasede tredje update kan det være gavnligt at se på de featuregrupper, som der primært er frigivet funktionalitet indenfor i hhv. Update 1 og Update 2. Microsoft ser det selv som:

·         ALM Features/Agile Planning

·         Quality Enablement (Test)

·         Coding

Jeg vil tage et nærmere kig på features under Agile Planning og Quality Enablement, mens nogle af Coding features er dækket bla. i Erik Ejlskovs blog: http://blogs.commentor.dk/post/6-gode-grunde-til-som-udvikler-at-installere-Visual-Studio-2012-Update-3.aspx

ALM features/Agile Planning

Under de agile værktøjer er der sket en del med Update 1+2. Kanban board’et er blevet introduceret og det er blevet forbedret i Update 2 med bedre muligheder for konfiguration, herunder specificering af WIP samt workflows (Kanban customizable columns). Det sidste er især interessant, idet det sker via en ny feature, der kaldes WIT extensions. De er forklaret nærmere i denne blog:

http://blogs.msdn.com/b/visualstudioalm/archive/2013/03/04/kanban-customizable-columns-under-the-hood.aspx

Kort fortalt giver det mulighed for at udvide workflow’et dynamisk, når Kanban board’et bruges uden at det er nødvendigt at ændre på det pågældende work items ”State” felt. Dvs. board’et virker uden at alle ens WIT definitioner skal opdateres. Forvent at se WIT extensions brugt i andre sammenhænge fremover.

På denne figur ses det nye Kanban board:

Yderligere er der lavet en del forbedringer til de eksisterende ”agile planning værktøjer”. Dvs. hhv. Backlog tool’et og Sprint board’et. I Backlogen er det små forbedringer som at kunne email’e backlog items, så disse inkluderes i en tabel med links direkte tilbage til work item’et i web acces:

I Sprint board’et er der udvidet med de manglede drag & drop funktioner ifht. TFS2012 RTM, så det nu er muligt at reassigne et work item til et andet team member eller til en anden ”Activity” og yderligere den meget savnede mulighed for at reassigne et task fra en user story til en anden via drag & drop.

Her reassignes det highligt’ede ”Task” til et andet team member.

Alle disse drag & drop forbedringer var en del af Update 1.

Udover Backlog og Sprint board forbedringer blev en række småforbedringer spredt udover hele web acces delen:

·         Antal links vises nu på ”Links” og ”Attachments” tab headerne, så man ikke behøver at åbne tab’en for at se om der er relaterede links eller attachments

·         Next/previous navigering mellem Work Items

·         Email Work Item(s) fra Query

·         Position af splitters huskes, navigationsvinduer kan gemmes etc.

De fleste af disse småforbedringer kom i update 1, mens update 2 kun havde et mindre antal, som eks. email featuren. 

Test

Et andet område, hvor der er sket meget store funktionalitetsforbedringer er inden for test. Den vel nok største feature er Test Case management og Test afvikling uden installation af Microsoft Test Manager. Dvs. direkte via browseren i TFS Web Access.

Herfra kan laves basal test case management og test afvikling, men der opsamles dog ikke ekstern test data fra test data adaptere, som ved Test Manager, da der ikke installeres noget på test maskinen.

En meget savnet og højst brugbar feature, der kom med Update 2 var muligheden for at editere test steps og test resultater direkte under test afvikling. Dette var igen en udvidelse af Web Access test delen og faktisk ikke engang muligt med Test Manager.

Nogle af de ting, der dog stadig var savnet i Update 2 Web Access test var muligheden for at kreere og editere test planer samt test suiter og shared test steps, men disse er netop annonceret i TFS2013.

Det er nok en trend, som vi vil se fremover at ”halve features” releases via disse mellem-updates. Så hvor man tidligere måtte vente længere tid på den fulde feature vil man nu tidligere kunne tage udvalgte dele i brug.

Retrospective

Det har især været TFS Web Access, der har trukket læsset med nye ALM og test features. Det har været alt fra nye team boards, som Kanban boardet til web baseret Test Case Management og til kraftige forbedringer på muligheder til at se sin kode, sammenligne ændringer, se underliggende historik etc. Yderligere har der været en række infrastrukturændringer, som ikke har været så tydelige, men som både nu og på sigt vil muliggøre ny funktionalitet. Herunder bla. WIT extensions, der muliggøre funktionaliteten i Kanban board’et, men også refaktoreringer af kerne services, udvidelse af autentikeringsmekanismer og identity management.

Og hvad har så været prisen for denne strøm af nye features? En ting er selvfølgelig de løbende releases af ”halve features” som eks. webbaseret test case management, der vil være et fænomen, man skal vænne sig til og vurdere om det passer ind i ens arbejdssituation og i øvrigt det setup man har. Men primært har prisen været suboptimal kvalitet. Update 1 var et kerneeksempel på dette. Den indeholdt alt lige fra installationen hvor alle tidligere indstillinger blev glemt ved en opdatering og til at alle rettigheder blev glemt for TFS brugere L. Update 2 var en anelse bedre og nu blev indstillinger i det mindste husket, men den havde stadig fatale fejl, der bla. gjorde, at det var umuligt eks. at lave detach/attach og dermed reelt at flytte collections mellem installationer. Så eks. en opdatering af en TFS2010 til en ny TFS2012 (Update 1/Update 2) installation blev kraftigt besværliggjort.

Brian Harry har skrevet et antal blogs om de problemer, der har været, bla denne om Update 1, der siger det meste:

Some days you just want to crawl in a corner and cry

http://blogs.msdn.com/b/bharry/archive/2013/01/11/tfs-2012-update-1-hotfix.aspx

Set i lyset af dette var det forventeligt (og ønskeligt) at Update 3 ville blive en ren fejlretnings release.

Der er ingen tvivl om, at TFS teamet har lært af disse updates. Men det gør samtidig, at man er nødt til at teste og planlægge hvilke updates man skal følge med på løbende. Det vil være en afvejning af de fordele ved nye features, der kan optimere ens arbejdsgange mod de potentielle knaster, der evt. første bliver rettet i den efterfølgende update eller hotfix, som det skete ved Update 1. Vi kan selvfølgelig kun håbe at en ren fejlretnings release som Update 3 ikke bliver nødvendig i fremtiden og at det bliver muligt at følge med flowet ”med bind for øjnene”. Men som alle os andre, der også stræber efter kortere release cykler eller måske ligefrem continues deployment, så har både Microsoft og vi en række learnings til gode, før vi er der. Det er dog fantastisk positivt, at der arbejdes hen imod det og at der samtidig er den åbenhed om det, som der reelt har været med de seneste updates på både godt og ondt.

Skulle man bruge fodboldmæssige termer kan man sige, at Microsoft med TFS er blevet kraftigt forstærket i angrebet og til dels også på midtbanen, men at det fortsat sejler kraftigt i forsvaret.

Nu ser vi frem mod TFS2013 til efteråret, der varsler ekstremt spændende ny funktionalitet, såsom eksempelvis ”Release Management”, hvor TFS indtil nu har været helt blank. Men mere om dette i en kommende blog.

God sommer og vi høres ved til et spændende efterår med masser af ny ALM understøttende funktionalitet i Microsoft Visual Studio værktøjskassen. 

p.s. Mht. den seneste Update 3, så indeholder den som nævnt udelukkende fejlrettelser. Det lader til at være et godt skridt, når man tager de to tidligere updates i betragtning og samtidig den kendsgerning, at der allerede er annonceret en TFS2013 med ekstremt meget ny funktionalitet. Updates til TFS2012 er kumulative og det er muligt at download’e TFS2012 Update 3 her:

http://www.microsoft.com/en-us/download/details.aspx?id=38185 

 

Currently rated 1.5 by 28 people

  • Currently 1.5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by jorn.floor.andersen on Wednesday, July 03, 2013 4:56 AM
Permalink | Comments (0) | Post RSSRSS comment feed

6 gode grunde til som udvikler at installere Visual Studio 2012 Update 3

Visual Studio 2012 Update 3 er netop udkommet, og kan installeres via Tools/Extensions and Updates menuen direkte i Visual Studio. Der er ikke længere noget der hedder Service Packs til Visual Studio, og intentionen er at udgive Updates hver 3-4 måned.

Visual Studio 2012 Update 3 kan også hentes som et ISO disk image, som tillader centraliseret installation af updaten. http://go.microsoft.com/fwlink/?LinkId=301705

Du kan nemt verificere at Update 3 er installeret ved at gå til Help/About:


Bug fixes

De 3 Visual Studio updates er kumulative, dvs. Update 3 indeholder alle forbedringer fra Update 1 og 2. Du kan få en oversigt over de mange bug fixes via dette link: http://support.microsoft.com/kb/2707250

Test Explorer

Test Explorer er jo som du nok ved en helt ny feature i alle udgaver af Visual Studio 2012, der gør Unit Test oplevelsen meget bedre i forhold til de mange test relaterede vinduer i tidligere Visual Studio udgaver. Desuden kan man nu bruge bl.a. xUnit og nUnit tests i sine test klasser, og se de samlede resultater i Test Explorer vinduet.  Med Update 3 er der nu meget bedre muligheder for søgning og filtrering i dette vindue, et plus hvis man har et ikke trivielt antal Unit Tests i en Solution.

Som du kan se kan man nu filtrere på både Project, Class og noget kaldet Traits, hvilket for eksempel kan være Priority attributten. Læs mere om Traits her: http://blogs.msdn.com/b/visualstudioalm/archive/2013/06/11/part-3-unit-testing-with-traits-and-code-coverage-in-visual-studio-2012-using-the-tfs-build-and-the-new-nuget-adapter-approach.aspx

  

Tilsvarende kan du nu sætte diverse søgefiltre op, der svarer til de nye filtre.

TIP: Du kan installere test runners til xUnit og nUnit fra Extension and Updates dialogen.

Fakes

Microsoft Fakes, som blev introduceret i Visual Studio 2012 Ultimate, hjælper dig med at isolere den kode du teste ved at erstatte andre dele af applikationen med stubs eller shims. Du kan således teste din kode, selv om andre dele af applikation endnu ikke er færdige.

Med Update 3 er Fakes også tilgængelige fra VS 2012 Premium, hvilket gør det mere anvendeligt på et team af udviklere, hvoraf kun nogle har Ultimate udgaven.

TIP: Du kan også lave Shims og Stubs til for eksemple System.DateTime.Now i .NET BCL ved at højreklikke på System og vælge Add Fakes Assembly

 

 

Windows Phone

Windows Phone 8 udviklere har fået en del nye features via Update 3:

Mulighed for at tilføje en ”Unit Test App” til Windows Phone løsninger: http://msdn.microsoft.com/en-us/library/windowsphone/develop/dn168930(v=vs.105).aspx

Forbedret Kodeanalyse, og mulighed for at bygge Windows Phone projekter fra kommandolinien.

TIP: Du kan også køre Windows Phone Unit Tests fra kommando linjen med vstest.console

Code Map

Code Map kan bruges til at visualisere sammenhæng mellem kode. Det kan hjælpe dig med at navigere ”legacy” kode eller hjælpe dig til at forstå kode du ikke har set før, uden at forlade Visual Studio eller have behov for kode-dokumentation i andre formater. For at lave et Code Map kræves VS Ultimate, men de kan åbnes både i Visual Studio Professional og Premium (da det er .DGML filer).

Blå tema

For udviklere med Visual Studio 2010 nostalgi får du med Update 3 også mulighed for at få et blå tema i Visual Studio (udover Dark og Light temaerne),

  

TIP: Hvis du vil gå ”Tema amok” kan du installere ” Visual Studio 2012 Color Theme Editor” http://visualstudiogallery.msdn.microsoft.com/366ad100-0003-4c9a-81a8-337d4e7ace05?SRC=Home

Dette var blot et udsnit af de mange opdateringer i Update 3, der er mange flere både for XAML og Web udviklere. Så se at få installeret Visual Studio Update 3, som er gratis for alle Visual Studio brugere.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Wednesday, July 03, 2013 4:34 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Using the Windows Phone Custom Contact Store

[Reposted from Christian Helle's Blog]

In previous versions of Windows Phone, you could always query the contact store to retrieve contact or calendar items. During that time I always wondered why I couldn’t just create my own contacts that can be shared with other applications and accessed through the People Hub. I guess more people had this problem and in Windows Phone 8 this has been addressed. Windows Phone 8 introduced the custom contact store in which apps can create contacts that are accessible from the People Hub and from other apps. Items in the custom contact store may only be modified by app that created them

How to create contacts in Windows Phone 8

In this section I would like to demonstrate how to use the custom contact store API. In order to do so we’ll create a UI that accepts the display name, email address, and mobile phone number. To make it a bit more fancy, we’ll add a feature that accepts a photo which can be loaded either from the camera or the media library

So here’s the code…

XAML
<phone:PhoneApplicationPage x:Class="CustomContactStore.MainPage"
                            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                            xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
                            xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
                            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                            mc:Ignorable="d"
                            FontFamily="{StaticResource PhoneFontFamilyNormal}"
                            FontSize="{StaticResource PhoneFontSizeNormal}"
                            Foreground="{StaticResource PhoneForegroundBrush}"
                            SupportedOrientations="Portrait"
                            Orientation="Portrait"
                            shell:SystemTray.IsVisible="True">

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock Text="CUSTOM CONTACT STORE" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0" />
            <TextBlock Text="Sample" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" />
        </StackPanel>

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <TextBlock Text="Display Name" VerticalAlignment="Center" />
                    <TextBox Grid.Column="1" Name="displayName" />
                    <TextBlock Grid.Row="1" Text="Email" VerticalAlignment="Center" />
                    <TextBox Grid.Row="1" Grid.Column="1" Name="email" />
                    <TextBlock Grid.Row="2" VerticalAlignment="Center" Text="Mobile" />
                    <TextBox Grid.Row="2" Grid.Column="1" Name="mobile" />
                </Grid>
                <Button Content="Attach New Photo" Click="AttachNewPhotoClicked" />
                <Button Content="Attach Existing Photo" Click="AttachExistingPhotoClicked" />
                <Button Content="Save Contact" Click="AddClicked" />
            </StackPanel>
        </Grid>
    </Grid>

</phone:PhoneApplicationPage>

 

Code Behind (C#)
using System;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Phone.Tasks;
using Windows.Phone.PersonalInformation;

namespace CustomContactStore
{
    public partial class MainPage
    {
        private Stream photo;

        public MainPage()
        {
            InitializeComponent();
        }

        private async void AddClicked(object sender, RoutedEventArgs e)
        {
            var store = await ContactStore.CreateOrOpenAsync();
            var contact = new StoredContact(store)
                              {
                                  DisplayName = displayName.Text
                              };

            var props = await contact.GetPropertiesAsync();
            props.Add(KnownContactProperties.Email, email.Text);
            props.Add(KnownContactProperties.MobileTelephone, mobile.Text);

            if (photo != null)
                await contact.SetDisplayPictureAsync(photo.AsInputStream());

            await contact.SaveAsync();

            if (photo != null)
                photo.Dispose();
        }

        private void AttachNewPhotoClicked(object sender, RoutedEventArgs e)
        {
            var task = new CameraCaptureTask();
            task.Completed += OnTaskOnCompleted;
            task.Show();
        }

        private void OnTaskOnCompleted(object o, PhotoResult result)
        {
            photo = result.ChosenPhoto;
        }

        private void AttachExistingPhotoClicked(object sender, RoutedEventArgs e)
        {
            var task = new PhotoChooserTask();
            task.Completed += OnTaskOnCompleted;
            task.Show();
        }
    }
}

 

To create a custom contact we need to use the ContactStore API, we create an instance of this using the helper method CreateOrOpenAsync(). Now that we have an instance of the contact store, we create an instance of a StoredContact and set the DisplayName property to the value of the display name entered in the UI. The StoredContact object is very limited but we can add KnownContactProperties such as Email and MobileTelephone. This is done by using the GetPropertiesAsync() method of the StoredContact instance. The photos can be attached using the CameraCaptureTask or the PhotoChooserTask. We attach the photos by calling the SetDisplayPictureAsync() method of the StoredContact instance. The API’s for the custom contact store are pretty straight forward and easy to use.

Manifest

The custom contact store requires the ID_CAP_CONTACTS capability, we should enable that in the WMAppManifest.xml file. In order to that, in the Visual Studio Solution Explorer, expand the project properties folder and double click the WMAppManifest.xml file. This will open the new UI editor for the manifest file. Go to the Capabilities tab and enable the ID_CAP_CONTACTS

id_cap_contacts

Once the manifest file has been updated the app should be able to launch.

The user interface looks like this:

Custom Contact Store

Once the contact is created it will be available in the People Hub

People Hub

When the contact is viewed from the People Hub the owner of the contact will be displayed on top

Custom Contact

I hope you found this useful. You can check out the source code using the link below

Currently rated 1.5 by 692 people

  • Currently 1.500723/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: Windows Phone 8
Posted by christian.resma.helle on Monday, April 15, 2013 8:46 AM
Permalink | Comments (0) | Post RSSRSS comment feed

SQL Server Compact 4.0 SP1 Released To Web

SQL Server Compact 4.0 SP1 Released To Web

Read more here: http://erikej.blogspot.dk/2012/08/sql-server-compact-40-sp1-released-to.html

Currently rated 1.5 by 63 people

  • Currently 1.492804/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Tuesday, August 21, 2012 6:39 AM
Permalink | Comments (0) | Post RSSRSS comment feed

The state and (near) future of SQL Server Compact

I recently got asked about the future of SQL Server Compact, and in this blog post I will elaborate a little on this and the present state of SQL Server Compact

Read more here: http://erikej.blogspot.dk/2012/07/the-state-and-near-future-of-sql-server.html

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Tuesday, August 21, 2012 6:38 AM
Permalink | Comments (0) | Post RSSRSS comment feed

Exporting SQL Server Compact to SQLite

The current available local relational database storage options on WinRT (Windows 8) are limited to SQLite (and maybe some others). Also on Windows Phone 8, both SQL Server Compact and SQLite will be available. So a natural path solutions currently based on SQL Server Compact will be to migrate to SQLite, and the first step would be to move the schema and data to a SQLite database

Read more here: http://erikej.blogspot.dk/2012/08/exporting-sql-server-compact-to-sqlite.html

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Tuesday, August 21, 2012 6:31 AM
Permalink | Comments (0) | Post RSSRSS comment feed

HOW TO: Connect to SQL Server Compact from F#

F# version 3.0 in Visual Studio 2012 makes it relatively easy to connect to a SQL Server Compact database (I am NOT a F# programmer, and even I could connect, so it must be very easy!).

Read more here: http://erikej.blogspot.dk/2012/06/how-to-connect-to-sql-server-compact.html

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by erikej on Tuesday, August 21, 2012 6:29 AM
Permalink | Comments (0) | Post RSSRSS comment feed