With mobile device proliferation, there is a large number of mobile devices available in the market, exceeding even laptops & desktops. As a developer, creating and listing your app in the Marketplace
offers you the opportunity to reach millions of Apps users. But you have to make sure that these apps meet the criteria set by respective stores.
In this article, we’re going to build an end-to-end Windows Phone Store Ready application which will meet all store requirements so that you can publish it for end-users to download. We’ll build a ‘MovieQuotes’ application which will show popular quotes from famous movies. We’ll keep this application very simple and focus more on getting this application certified on Windows Phone store.
This article is published from the DotNetCurry .NET Magazine – A Free High Quality Digital Magazine for .NET professionals published once every two months. Subscribe to this eMagazine for Free and get access to hundreds of free tutorials from experts
Windows Phone Development Environment
To create and test Windows Phone 8 applications, we’ll need a Microsoft Windows 8 Pro 64 bit machine with Second Level Address Translation (SLAT) support. More information about this requirement can be found here: http://msdn.microsoft.com/en-US/library/windowsphone/develop/jj863509%28v=vs.105%29.aspx
Once this developer machine is ready, we can install Windows Phone 8 SDK. This SDK will provide a Free edition of Microsoft Visual Studio Express for Windows Phone, which can be used to create our ‘MovieQuotes’ application. If Microsoft Visual Studio 2012 is already installed on the dev machine, this SDK will integrate into it, providing more benefits.
Creating MovieQuotes Application
To create ‘MovieQuotes’ application, start Visual Studio and navigate to File > New > Project. In the next dialog box, select Windows Phone as a project type under C# Language. In Project Template select ‘Windows Phone Application’. Give ‘MovieQuotes’ name to the project. The dialog box will look similar to one shown below:
Once we click on ‘OK’, Visual Studio will ask us to select Target Windows Phone OS version. We’re going to build this application for Windows Phone 8. Select this OS version and click on ‘OK’ again.

At this time, the project is created and Visual Studio will load this project. Visual Studio will also provide a WYSIWYG interface for creating Windows Phone projects.

MovieQuotes Data
To keep things simple and focus on the Store Ready aspect of this article, we’re going to use an XML file which will hold popular movie quotes. To add this XML file to your project, click on Project Menu > Add New Item to bring up a new dialog box. Select XML file type, name it as ‘MovieQuotes.xml’ and click on ‘Add’ button.
To start with, let’s add some records in this file. Type following lines of code into this file.
I'm gonna make him an offer he can't refuse.
The Godfather
http://www.imdb.com/title/tt0068646/
Godfather.jpg
No Sicilian can refuse any request on his daughter's wedding day.
The Godfather
http://www.imdb.com/title/tt0068646/
Up there with the best of the best.
Top Gun
http://www.imdb.com/title/tt0092099
Apollo13.jpg
We just put Sir Isaac Newton in the driver's seat.
Apollo 13
http://www.imdb.com/title/tt0112384
Apollo13.jpg
Houston, we have a problem.
Apollo 13
http://www.imdb.com/title/tt0112384
Reading Quotes
Now let’s add another class, which will allow us to read this XML file. Click on Project Menu > Add Class. Give it a name as ‘QuotesReader.cs’ and click on ‘Add’ button.
In this class, write the following code. To make things simpler, I have added some inlinecomments with the code.
///
/// MovieQuotes Class to represent MovieQuote from XML file
///
public class MovieQuote
{
public string Text { get; set; }
public string Movie { get; set; }
public string ImdbUrl { get; set; }
}
///
/// Reader Class to read quotes from XML file
///
public class QuotesReader
{
public List GetMovieQuotes()
{
var xdoc = XDocument.Load("MovieQuotes.xml");
var quotesList = from x in xdoc.Descendants("Quote")
select new MovieQuote
{
Text = x.Element("Text").Value,
Movie = x.Element("Movie").Value,
ImdbUrl = x.Element("IMDB").Value
};
return quotesList.ToList();
}
}
///
/// Extension Class to load Random/Next Quote
///
public static class Extenders
{
public static T GetSingleRandom(this IEnumerable target)
{
Random r = new Random(DateTime.Now.Millisecond);
int position = r.Next(target.Count());
return target.ElementAt(position);
}
}
Modifying MainPage
Once the Reader class is ready, let’s jump-in and modify MainPage.xaml to show quotes from the Reader. In MainPage.xaml file, locate TitlePanel and modify the code as shown below. This will show the Movie name in the page title.
In the ContentPanel on the same page, add a TextBlock using the following code. This will display movie quote in the content area.
In this page, before Page tag ends, add an ApplicationBar which will hold buttons to show Next & Previous quotes. The code at the end of the page should look like the following:
This is the only thing which is required to show movie name and quote from reader. Now, let’s modify the code behind to ‘actually’ show quotes on the page.
Modifying MainPage Code Behind
In MainPage.xaml.cs, modify the code as shown below. Again for simplicity, comments have been added.
//Private variables to hold movie quotes
private List _movieQuotes;
private QuotesReader _reader;
// Constructor
public MainPage()
{
InitializeComponent();
Loaded += MainPageLoaded;
}
//When page is loaded, read quotes using reader
//And bind it to main page
private void MainPageLoaded(object sender, RoutedEventArgs e)
{
_reader = new QuotesReader();
_movieQuotes = _reader.GetMovieQuotes();
this.DataContext = _movieQuotes.FirstOrDefault();
}
//Handle previous quote button click
private void BackClicked(object sender, EventArgs e)
{
this.DataContext = _reader.GetMovieQuotes().GetSingleRandom();
}
//Handle next quote button click
private void NextClicked(object sender, EventArgs e)
{
this.DataContext = _reader.GetMovieQuotes().GetSingleRandom();
}
Test Project
At this point, our application is ready. Now Run the project and see the output. Inside emulator, you’ll see different quotes.
Before Publishing The App
Now, the ‘MovieQuotes’ app is complete (from a demo context). However, it is not ready to pass certification process. There are some more steps that need to be followed to make sure this app meets certification guidelines and passes all the tests. Now let’s visit all these steps and run them over through this application.
01. Build in ‘Release’ Mode
It is mandatory to build this application in ‘Release’ mode to submit it to the App Store for download. To change the build mode from ‘Debug’ to ‘Release’, click on Build menu > Configuration Manager. In the next dialog box, make sure that the configuration is set to ‘Release’
02. Application Icons & Splash Screen
It is mandatory to provide application icons with application. Default Star-Burst icon is unacceptable and application may fail during certification tests. To create application icons, you can use any graphics editing tool like Adobe Photoshop, Illustrator or even Microsoft Paint. I recommend using Windows Phone Icon Maker, which is freely available at codeplex and link is: http://wpiconmaker.codeplex.com/
For Splash Screen, as mentioned earlier, any graphics editing tool can be used.
This tool will generate icons of different sizes which are required during application design and submission process.

Once these icons are created and saved, open Project > Properties > WMAppManifest.xml. This will open a tool, which will allow you to associate the icons to the project. Along with icons, do provide a complete description of the application in this tool.
03. Disable Debug Information
During debugging, application shows frame-rate counter and other debug information. This functionality is enabled by default. When app is ready to publish, disable this functionality. To disable, open App.xaml.cs and comment out this line of code
// Display the current frame rate counters.
//Application.Current.Host.Settings.EnableFrameRateCounter = true;
04. Take Screenshots
Screenshots are required during app testing and whilst submitting the app to the store. Windows Phone SDK & Emulator makes it easy to take screenshots with appropriate resolution. Run the project again and this time, use Emulator tool to take the screenshots. Take at least 3 screenshots for further use.

05. Set Test Parameters
Once again make sure that the Build mode is set to Release, all icons are in place and some screenshots are taken. Now click on Project menu > ‘Open Store Test Kit’. Associate all images to respective blocks. The window should look like the one shown below.
Don’t forget to build the project at this stage. It will associate all information and create a new build for test. Now, click on Automated Test on left pane and click on ‘Run Tests’ button. Once, all the tests are run on the project, it will show the test results.

06. Windows Phone Application Analysis
MovieQuotes application doesn’t involve lot of processing. Also, the data is stored within the application. If application is using intensive graphics, animations, frequent web service calls or lot of computations, it is always a good idea to run Windows Phone Application Analysis tool on the app.
While Publishing The App
Once above mentioned steps are followed and test results are passed, this application is ready to submit to the App Store. However, there are a couple of things which needs to be considered while processing these submission. Let’s visit them here.
01. Provide Correct Information
Even though it is not mandatory, it makes sense to match the application name inside the app with the application name on display. It is also advisable to select specific category for the application. An educational application can be submitted inside education; as well as books + reference. So choose the category wisely, where people will actually look-out for the application.
02. Pricing
Developer/Publisher can price the application according to their expectations. However, make sure that W8 form(required by the USA) and other formalities are completed before the app is submitted to the store. Else, it can get complicated when withdrawing/transferring money earned from app sales.
To get more audience to use your app, it is always a good idea to provide free/trial or freemium application version. This will give a chance to audience to test your app and if they like, they can purchase the higher version.
03. Market Distribution
Unless the app is really targeted to certain markets (country regions), be restrictive about publishing to that market. Every region has their own certification requirements. For example, different countries have different rules for content certification, minimum age requirements, localization, etc. If the app is submitted to all the markets, it will take time to certify and sometimes, more information or changes in the app may be required to meet those certification requirements.
04. Certification Notes
MovieQuotes application doesn’t require any authentication. However, there can be some apps which may require authentication. There also can be some apps with special cases like localization on some pages, some unpredictable content served from web service. In this case, this information (may be a test-user account credentials) can be provided under certification notes. These notes can help testers to validate your app and certify it.
05. Legal & Privacy Statement, Support Email Address
It is mandatory for the publisher to provide valid Legal and Privacy statements during submission process. Publisher can host 2 different html files e.g. site.com/legal.html and site.com/privacy.html. For simplicity and in a scenario where the publisher doesn’t have a website hosted, these files can be put on SkyDrive with public read access or on a blog as well.
Along with this information, there must be a support email address provided to submit the app. This can be used by end-users if they need any support. Creating separate Distribution List or Email ID will help.
After Submitting The App
With these basic points in mind while developing and submitting the app to the store, it is very unlikely that your app will fail the certification. However, if the app fails for some reason, the publisher will receive a detailed error report which can help track-down the exact details of the error and the developer can fix it.
Conclusion
With these mantras, I’m quite sure that many of you will find building Windows Phone applications a fun activity and easy to publish on the store. With this, happy coding :)
Download the entire source code from our GitHub Repository
This article has been editorially reviewed by Suprotim Agarwal.
C# and .NET have been around for a very long time, but their constant growth means there’s always more to learn.
We at DotNetCurry are very excited to announce The Absolutely Awesome Book on C# and .NET. This is a 500 pages concise technical eBook available in PDF, ePub (iPad), and Mobi (Kindle).
Organized around concepts, this Book aims to provide a concise, yet solid foundation in C# and .NET, covering C# 6.0, C# 7.0 and .NET Core, with chapters on the latest .NET Core 3.0, .NET Standard and C# 8.0 (final release) too. Use these concepts to deepen your existing knowledge of C# and .NET, to have a solid grasp of the latest in C# and .NET OR to crack your next .NET Interview.
Click here to Explore the Table of Contents or Download Sample Chapters!
Was this article worth reading? Share it with fellow developers too. Thanks!
Mayur Tendulkar works as a Local Type Inference (i.e. Consultant) at Zevenseas. He has worked on various Microsoft technologies & is part of Pune and Mumbai User Groups. Since 2008, he has been a speaker at various Microsoft events. You can reach him at mayur[dot]tendulkar[attherate]hotmail.com