Monthly Archives: August 2012

Creating a Scrum Team Project in Visual Studio 2012 using Visual Studio Scrum 2.0 process

To Install and Configure Team Foundation Server 2012 see the post here at Team Foundation Server 2012 RC – Install & Configure.

In this post, we will walk through the steps to achieve the following tasks

  • Connect to Team Foundation Server – TFS 2012
  • Creating a Team Project using Visual Studio Scrum 2.0 process
  • Windows Azure TFS Service

This post defines the SCRUM and discusses how to use SCRUM Template 2.0 to manage projects in Visual Studio 2012 Team Foundation Server. You can develop the enterprise projects using SCRUM framework which is based on Agile development methodology.

Scrum is an iterative and incremental agile software development method for managing software projects and product or application development. For Introduction to Agile Project Management Tools, see the blog post @


Figure: Pictorial representation of the Scrum development.

For Scrum Process for Software Development using Microsoft Visual Studio Scrum 1.0 Process Template , see the blog post @

At this point you can go one of two directions.  You can install TFS 2012 or use Windows Azure based Visual Studio Team Foundation Service Preview. Team Foundation Service Preview enables everyone on your team to collaborate more effectively, be more agile, and deliver better quality software. You can sign up at and start using TFS if you want to use the Azure version.

In this post , we will discuss about installing and configuring TFS with VS 2012.

Connect to Team Foundation Server:

All team projects are stored and managed on a Team Foundation Server. To start working on a team project, you must first connect to the appropriate Team Foundation Server. Following are the steps to connect to an instance of Team Foundation Server for the first time.

1. On the menu bar, choose VIEW menu and click Team Explorer as shown in Fig 1.


Figure 1: Selecting Team Explorer in Visual Studio 2012

2. Team Explorer is highlighted up as shown in Fig 2


Figure 2: Visual Studio 2012 with Team Explorer

3. On the Team Explorer shown in Fig 3, click Connect to Team Foundation Server.


Figure 3: Click the link Connect to Team Foundation Server.

3.1 Step 3 can also be achieved by clicking on the TEAM menu shown in Fig 3.1 and click on Connect to Team Foundation Server.


Figure 3.1 Connecting to Team Foundation Server from the TEAM menu

4. In the Connect to Team Foundation Server dialog box, select a Team Foundation Server from the drop-down list as shown in Fig 4.


Figure 4: Connecting to Team Foundation Server

Note: If the drop-down list is empty, click the Servers button to manually enter the Team Foundation settings as shown in Fig 4.1. Contact your Team Foundation Server administrator or team project administrator for the correct Team Foundation Server connection settings.


Figure 4.1: Manually enter the Team Foundation settings

  1. In the Connect to Team Project dialog box, choose the Servers button.

  2. In the Add/Remove Team Foundation Server dialog box, choose the Add button.

  3. In the Add Team Foundation Server dialog box, type the name or URL for the server.

  4. When you type a server name, the Preview field automatically displays the URL format, for example:

    http:// ServerName:Port/tfs

    ServerName is the name of the server that hosts Team Foundation Server.

    Port is the port that Team Foundation Server uses; the default value is 8080. If your server uses a different port number, you must specify it in the Port number box.

    tfs is the default path to the project collections that are stored on the server. If your team uses a different path, type it in the Path box.

  5. Verify that the URL is correct, choose the OK button twice, and then choose the Close button.

5. In the Connect to Team Project dialog box, under Team Project Collections, select the team project collection that hosts the team projects that you want to connect to. Then, under Team Projects, select the check box for each team project that you want to access, and then choose the Connect button as shown in Fig 5. Team projects with a check mark next to them will display in Team Explorer.


Figure 5: Connect to Team Project and choose the Team Projects

6. Click OK.

Team Explorer displays the team projects under the selected Team Foundation Server as shown in Fig 6. Note: The contents displayed in Fig 6 might vary depending on the versions of VS.


Fig 6: Details of Team Explorer

Note: Team projects are created on a Team Foundation Server, therefore, you must connect to a Team Foundation Server as described in the above 6 steps before perform Creating a Team Project. After you have connected, you can create a team project.

Creating a Team Project

Software projects in Team Foundation are called team projects and are very different from the software projects (.csprj or .vbproj) in Visual Studio. The team project is the central concept that holds together the team endeavor of creating a specific software technology or product. When you create a team project, the New Team Project Wizard creates a number of focal points by which to centralize the team efforts. A team project Web site is created containing document templates, and predefined reports. A work item database is created for tracking all effort on the project. A process template is installed that determines rules, policies, security groups, and queries for all work effort. A source code branch is created for source control.


Figure 7: A project is where you store all your source code, as well as tasks and builds.

1. Team project can be created by using any of the following methods (a, b or c).

a. On the File menu, point to New, and then click Team Project as shown in Fig 8


Figure 8: Creating a Team Project from File Menu

b. In Team Explorer click Create a New Team Project as shown in Fig 9


Figure 9: Creating a New Team Project from Team Explorer links

c. In Team Explorer click Drop Down Icon, select Project and My Teams, Click on New Team Project as shown in Fig 10


Figure 10: 3 steps to create a team project using Home drop down options.

2. The New Team Project wizard appears. On the Specify the Team Project Settings page, type your project name in the What is the name of the team project? box as shown in Fig 11. click Next.


Figure 11: Specify the Team Project Settings

Note: Going ahead, I will be using iCITE as the project name.

3. On the Select a Process Template page as shown in Fig 12, in the Which process template should be used to create the team project? drop-down list, select Microsoft Visual Studio Scrum 2.0 as shown in Fig 13.


Figure 12: Selecting process template for the New team Project

Team Explorer includes process templates based on the Microsoft Solutions Framework (MSF). Some of the process templates are available by default: Microsoft Visual Studio Scrum 2.0, MSF for Agile Software Development – v6.0, and MSF for CMMI Process Improvement – v6.0. Your team or organization may provide additional process templates or may remove the MSF templates. Here’s some help about what process template to choose:

Microsoft Visual Studio Scrum 2.0 (default) is built for teams practicing the Scrum methodology, and want to use the Scrum terms, such as “Product Backlog Item.”

MSF for Agile Software Development 6.0 supports iterative and incremental software development. MSF for Agile can also be used to implement Scrum, however it is adaptive for more general use.

MSF for CMMI Process Improvement 6.0 supports an approach whose goal is to help organizations improve their performance. Development with CMMI emphasizes traceability and auditability.


Figure 13: Selecting Microsoft Visual Studio Scrum 2.0 for the New team Project

4. On the Specify the Source Control Settings page shown in fig 14, keep the default values and click Next.


Figure 14: Source Control folder path

5. On the Confirm the Team Project Settings page shown in Fig 15 , click Finish.


Figure 15: Confirming the settings for the New Team Project

6. The New Team Project wizard creates your new team project as shown in Fig 16.

NoteNote: It may take several minutes for the wizard to finish.


Figure 16: Status showing the Team Project Creation.

7. On the Team Project Created page shown in Fig 17, click Close.


Figure 17: Successful creation of Team Project.

Because the check box for Launch the process guidance for more information about running the team project was selected by default, the wizard opens the overview page for the process guidance for MSF Agile for Software Development.

The iCITE Innovation team project displays in Team Explorer. There are several top-level nodes:

  • My Work: This node provides access to the tasks assigned to me.

  • Pending Changes: This node provides access to the team project source control management hierarchy.

  • Work Items: This node provides access to add work items and to create and view queries against the work item database.

  • Builds   This node provides access to the builds of your team project.

  • Web Access: Click on Web Access opens up the web page for the project.

  • Settings:  Clicking on settings brings up the Project Settings page in team Explorer as shown in Figure 18.


Figure 18: Team Project Settings displayed in Team Explorer.

From here on, you can either use the Team Explorer in Visual Studio 2012 or using the browser for planning and tracking projects.

a. Using Visual Studio 2012 and team Explorer to manage the Team Project


Figure 19: Opening http://kishore1021:8080/tfs/DefaultCollection/iCITE%20Innovation/_admin/_security in Visual Studio 2012.

b. You can also use Web Browser to manage the Team Project. In the Team Explorer home navigation menu for the team project, choose Web Access to launch the browser as shown in Fig 19. A browser window will open to the home page for that team project with the URL http://ServerName:Port/tfs/CollectionName/ProjectName For ex, http://kishore1021:8080/tfs/DefaultCollection/iCITE%20Innovation/ image

Figure 20: Managing the Team Project through browser.

FYI: Click on the settings (gear) icon located on the top upper right hand corner in the browser window shown in figure 20 brings up the browser window shown in Figure 21.image

Figure 21: Control Panel of the Team Project

Fig 22 shows the Control Panel of the Team Project as seen from the browserimage

Figure 22: Control Panel of the Team Project

Windows Azure TFS Service:

Microsoft announced the availability of Windows Azure based Visual Studio Team Foundation Service. To get started, signup for TFS at

I created similar project on windows Azure TFS Service and following is the screenshot.


Figure 23: Team collaboration and agile planning in Windows Azure TFS Service.

To get started on using TFS on Windows Azure, see the blog

Windows8 Desktop Keyboard Shortcuts

Keyboard Shortcut


Windows + I

Window Restart, Shutdown, Sleep, Taskbar Notification Icons like Network, Sound Control, Brightness, Notifications, Keyboard.



Windows + X

Menu for frequent Administrator Tasks

Windows + 0

Opens 10th application on taskbar with  Normal Privileges. You can use the following values for applications on Taskbar.

  1. 1st Application on taskbar of Classic Desktop View
  2. 2nd Application on taskbar of Classic Desktop View
  3. 3rd  Application on taskbar of Classic Desktop View
  4. 4th  Application on taskbar of Classic Desktop View
  5. 5th  Application on taskbar of Classic Desktop View
  6. 6th  Application on taskbar of Classic Desktop View
  7. 7th  Application on taskbar of Classic Desktop View
  8. 8th Application on taskbar of Classic Desktop View
  9. 9th  Application on taskbar of Classic Desktop View

You can rearrange your applications on taskbar  according your choice and priority to take advantage of this shortcut.

Windows + Ctrl + Shift + 0

Opens 10th application on taskbar with  Elevated Privileges. You can use the following values for applications on Taskbar.

  1. 1st Application on taskbar of Classic Desktop View
  2. 2nd Application on taskbar of Classic Desktop View
  3. 3rd  Application on taskbar of Classic Desktop View
  4. 4th  Application on taskbar of Classic Desktop View
  5. 5th  Application on taskbar of Classic Desktop View
  6. 6th  Application on taskbar of Classic Desktop View
  7. 7th  Application on taskbar of Classic Desktop View
  8. 8th Application on taskbar of Classic Desktop View
  9. 9th  Application on taskbar of Classic Desktop View

You can rearrange your applications on taskbar  according your choice and priority to take advantage of this shortcut.

Windows + C

This shortcut gives you view the Settings, Devices, Start, Share & Search. This is the same option that comes when you move the mouse to the extreme bottom right corner.

Ctrl + Shift + Esc

Task Manager


Toggle between Modern Desktop & Legacy Desktop

Windows + D

Takes you to Legacy Windows Desktop.

If you press this key from the Modern Desktop, this takes you to the currently active application on the Legacy Desktop.

If you press this key from the Legacy Desktop, this displays the Desktop.

Pressing the same key combination, will Toggle Between the Legacy Desktop and Active Application on the Legacy Desktop

Only Legacy Desktop shown when all applications are in a minimized state

Windows + B

From the Modern Desktop, this takes you to the currently active application on the Legacy Desktop.

If all application are in minimized state on Legacy Desktop, this command will take you to the Legacy Desktop.

No effect when used from a Legacy Desktop.

Windows + M

From the Modern Desktop, this takes you to the Legacy Desktop and minimizes all applications on the  Legacy Desktop

When used from a Legacy Desktop, minimizes all applications.

If all application are in minimized state on Legacy Desktop, this command will take you to the Legacy  Desktop.


Windows + Q

Displays Apps windows with all apps and Search Bar

Windows + W

Displays Search Settings.

Windows + E

Windows Explorer displaying Computer Folder. Same as clicking on My Computer.

Windows + R

Display Run window.

Windows + T

Displays the Window Group Thumbnails on your taskbar. This is equivalent of hovering the mouse over the Taskbar Icons.

Each time you press the Windows + T combination, the next application group is  displayed

Windows + U

Displays Ease of Access Center

Windows + P

Option to Extend the display.

Windows + +

Zoom Windows

Windows + F

Search Files

Windows + H

Display Share options

Windows + K

Display Devices to Share with.

Windows + <

Preview Legacy Desktop

Windows + L

Lock the Computer

Can you use Windows 8 WinRT API from .NET Desktop applications?

Over the course of time I received a number of comments on my blog in this area. Many questions were asked like “Can you use WinRT from Desktop applications?”, “Can you use WinRT from .NET applications?”, etc..

Well, the answer is YES. It is possible to use WinRT from Desktop applications. WinRT APIs may be tied to Metro style apps, Desktop apps or potentially available to both. The documentation will list which environments (Desktop, Metro style or both) a given API works in.

Note: Custom WinRT components are only supported in Metro style applications. They are not supported in Desktop applications.

For ex, WinRT has an API for Accelerometer. The Accelerometer class represents an accelerometer sensor which returns G-force values with respect to the x, y, and z axes.

Namespace: Windows.Devices.Sensors namespace
Class: Accelerometer

If we open the API documentation at, see the section Applies to: Metro style apps | desktop apps. Which means this class works in Metro Apps as well as desktop apps.


Figure 1: MSDN documentation showing WinRT API and it’s applies to section.

Why should you invest in learning emerging technologies?

Software Experts who keep educating themselves have a career versus those who don’t care for one.

What are the main benefits of expending the effort to learn a new technology?

1.New ways to solve problems
2.Accelerate development
3.Advise clients and get new business opportunities

As they say, those who do not learn from history are bound to repeat it.  If you can learn something from an older technology it can be just as valuable as the shiny new one.  Either way, when you add another tool to your kit you get a new view on each problem you face.  This makes it easier to create a sound solution.

The next thing you can learn from working with different products and techniques is how to more efficiently develop solve problems.  Many times if you are working with a new language you will find that there are specific design patterns that are used with it in normal use.  These can usually be applied with most languages.  You just needed to be exposed to them.

The last point is about helping your clients and helping yourself.  If you can get in on technologies early you will have advantage over your competition in the market.  You will also be able to honestly advise you client on why they should or should not go with a new product.  Being able to compare products and their features is always an ability that stake holders appreciate.

An interesting article on the web:

What’s the chatter about Windows 8, Windows 8 Surface, Windows 8 Phones & the new development technologies

Well, the last few weeks had been exciting with the release of information related to Windows Surface & Windows Phone 8. I was following these releases and noticed the chatter around the new devices from Microsoft. Here is some of the info related to the same.

5 ways Microsoft’s Surface may be better than an iPad:

Windows 8 is an Android killer :

Microsoft’s Surface tablet vs. the iPad: Seven challenges:

Wall Street Journal:

Windows 8 is, in my humble opinion, the most innovative version of Windows Microsoft has released since Windows 95. What Windows 8 does, says Mr. Courtois, is to bring a consistency to all of Microsoft’s products. The "metro" interface, with its innovative live tiles design, is a bold departure for Microsoft from its familiar and iconic desktop. The one interface to bind them all—desktop, tablet, smartphone, X-Box, even TV—is what Mr. Courtois is hoping, and Mr. Elop is praying, will get people to buy Windows-powered mobile phones.

Personally, I very much appreciate what Microsoft is trying to do with Windows 8. I’ve noticed many improvements from the Developer Preview to the Release Preview and I believe they will reveal some interesting surprises in the final version. I very much understand and appreciate Microsoft’s end goal – one operating system and one experience on all your devices: your phone, your Xbox, your desktop, your laptop, your tablet, your hybrid computing device you don’t yet know how it looks like. If they succeed with this vision, they will change how we use computers and devices forever.

With the new kernel, Microsoft is also enabling the creation of native code applications written in C++ for the first time on Windows Phone. In version 7.5, all applications are developed in C# or Visual Basic .NET and compiled to platform-independent bytecode. While this has proven easy to use and attractive to many developers, it makes it hard for game developers to eke out all the performance the hardware can offer. It also precludes the use of useful libraries that developers on iOS, Android, and Windows can take advantage of.

Windows Phone 8’s native code support addresses both issues. Native code development will produce programs that run directly on the ARM processors that Windows Phone supports. This should boost performance, and will greatly extend source code compatibility with other platforms.

The trend of "Bring Your Own Device" causes both IT and compliance departments numerous headaches. It is one thing for the IT department to support the CEO’s iPad, but with the explosion of devices, operating systems and services, how CIOs must yearn for the day when they could issue recruits with a company laptop and a company phone and it was all integrated. That is the promise of Windows 8; it puts the IT department back in control, just like the good old days.

"We are providing an end-to-end managed infrastructure to allow any enterprise, large or small… to manage all kind of devices and all kinds of applications in a secure way,"

Microsoft takes matters into its own hands.  It uses an ARM processor to compete on price, and an Intel processor to ride its Office monopoly.  These are not dumb moves.

Surface for Windows Pro also features the ability to use Digital Ink with pen input. During the announcement, it was noted that the distance between the stylus and the screen is .7mm. Surface for Windows Pro also features a microSDXC slot and a USB 3.0 port instead, and is slightly thicker at 13.5 mm.

Surface represents a major shift in strategy for the Microsoft Windows business unit. For years, OEM partners like HP, ASUS, and Dell, provided the hardware. Now Microsoft will be competing directly, particularly in the Ultrabook segment of the market.

Surface is notably competing directly with Apple‘s iPad, and doesn’t stop short with building a competitive set of features. In addition to its primary hardware specs, Surface also features a built in kickstand, which essentially turns the tablet into a monitor, and also a 3mm thin case that includes a multitouch keyboard. As no one does keyboards better than Microsoft, yet another keyboard is also available for Surface that features a full trackpad with clicking buttons. Though Surface is slightly heavier than the iPad and has 25% less battery size (31.5 Watt hours compared to the iPad’s 42.5 Watt hours), Surface is truly one of the most powerful and lightweight mobile PCs we have seen.

It’s clear that Surface is designed for current Windows users, and according to NetMarketshare, Windows XP, Vista, and 7 combine for 93% of all desktops. For these users – especially those in the corporate environment – there is a hesitation to switch to another platform, even just for mobile use. As a result, Surface could be a game-changer in the tablet industry. Not only does it feature key capabilities that Apple has yet to ever integrate (such as a keyboard), but Surface will undoubtedly make it easier for curent Windows users to transition from home to office and in-between. While a price has yet to be set, it’s expected to be extremely competitive compared to other tablets, ensuring that Surface is a device that many current Windows users will want to own.

Shared Windows core

Our biggest platform-related revelation last week was that Windows Phone 8 is built on a single shared code with Windows 8. This benefits every player in the ecosystem—end users, OEMs, mobile operators, and of course app developers.

So what does it mean for you? First, it means that your apps will be running on the same base platform that powers a billion PCs around the world and will provide your apps with a stable, high-performance core on top of next-generation hardware. More directly, it means that you’ll be able to share a significant amount of code between your Windows 8 apps and your Windows Phone 8 apps, in many cases only adjusting for the screen size differences between slates and phones.

Native code support

As I mentioned, one of the significant benefits of a shared Windows core is the ease of portability between Windows 8 and Windows Phone 8. We also know that the most popular way to ensure portability across numerous devices is to encapsulate most of an app’s logic in platform-independent native code. That’s one of the main reasons we’ve announced that Windows Phone 8 will support C++ and C.

I know many of you have questions about the implications. For example, over the last few days I’ve seen developers asking whether this means they can mix C#/XAML with DirectX/C++ or consume native C++ libraries from C# apps. Absolutely! You can mix the code as well as the UI (one element in XAML, another in DirectX).

Online Free Education from MIT, Stanford, Carnegie Mellon, etc..

OpenCourseWare, is a term applied to course materials created by universities and shared freely with the world via the Internet. See

Massachusetts Institute of Technology (MIT) kept all of the educational materials from its undergraduate- and graduate-level courses online, partly free and openly available to anyone, anywhere. As of November 2011, over 2080 courses were available online @
Where to Find free online MIT Classes: All classes are available through the official

The Stanford School of Engineering announced the pilot of a free online service Stanford Engineering Everywhere (SEE), that provides Stanford’s popular introduction to computer science and other computer science and electrical engineering courses. Each consists of complete video lectures and materials such as handouts, assignments, exams and transcripts.
Where to Find Stanford Engineering Classes: The courses are available at

The Open Learning Initiative (OLI) is a group at Carnegie Mellon University, offering innovative online courses to anyone who wants to learn or teach. Our aim is to create high-quality courses and contribute original research to improve learning and transform higher education. See Our Open + Free Courses @

University of California, Berkeley. Every semester, University of California Berkeley records several popular courses and offers them free to the public. Anyone can watch these recordings and learn from home. New lectures are posted to the web each week during the run of the course. The webcast classes are kept as archives for about a year, after which they are removed from distribution. Like other OpenCourseWare programs, UC Berkeley does not offer credit for these classes nor does it provide student/teacher interaction. UC Berkeley’s OpenCourseWare webcasts can be found on three websites: Webcast.Berkeley, Berkeley on YouTube, and Berkeley on iTunes University.
Where to Find Stanford Engineering Classes: The courses are available at

Princeton University offers free lectures on a huge number of subjects. The free Princeton Open Courses consist of complete, free online college courses, free online college classes, free audio lectures and other forms of free open courses.
Where to Find Stanford Engineering Classes: The courses are available at

Yale University offers Open Yale Courses that provide free and open access to a selection of introductory courses taught by distinguished teachers and scholars at Yale University. The aim of the project is to expand access to educational materials for all who wish to learn. All lectures were recorded in the Yale College classroom and are available in video, audio, and text transcript formats. Registration is not required. No course credit, degree, or certificate is available
Where to Find Stanford Engineering Classes: The courses are available at

  1. Center for the Study of the Public Domain: Duke Law offers a vast array of materials devoted to their intellectual property rights program.
  2. College of Eastern Utah’s OpenCourseWare: From accounting to psychology, this site contains a number of subjects to absorb.
  3. Columbia Interactive: Columbia University offers a database of selected digital learning resources developed by this college.
  4. Connexions: Rice University offers a rich resource of learning modules that focus on a wide range of subject matter.
  5. Fulbright School OpenCourseWare: Find courseware here that leads into 2011 classes on topics such as microeconomics for public policy, rural transformation and many more global and policy courses.
  6. Johns Hopkins Bloomberg School of Public Health: If you want to find updated courseware, lectures, articles and more on global health issues, look no further than this site.
  7. MSU OpenCourseWare: Michigan State University offers courses online in food safety, horse management, international business and planning and zoning.
  8. Notre Dame OpenCourseWare: Feel free to take advantage of courses that range from Africana studies to theology at this site.
  9. Open Learning Initiative: Carnegie Mellon offers OLI, a site where courses that foster interactivity, such as chemistry, economics and physics, are featured.
  10. Open.Michigan: The University of Michigan is on board with their open courseware project aimed at various courses from engineering to public health.
  11. Sofia: Offered by Foothills College, this project contains courses that range from creative typography to musicianship.
  12. TU Delft OpenCourseWare: This open courseware projects focuses on what this school does best – technology, including water management, microelectronics and much more.
  13. Tufts OpenCourseWare: Tufts offers various courses from their schools of dental medicine, meicine, nutrition science, veterinary medicine and much more.
  14. UCIrvine OpenCourseWare: This project, offered by the University of California at Irvine, features courses in business, physical and social sciences and health.
  15. UMass Boston OpenCourseWare: The University of Massachusetts at Boston offers courseware in topics such as biology, history and public policy.
  16. Utah State University: This college’s open courseware site features a variety of instruction from anthropology to university studies and wildland resources. Utah State OpenCourseWare is a collection of educational material used in our formal campus courses, and seeks to provide people around the world with an opportunity to access high quality learning opportunities
  17. UW Online Learning: The University of Washington offers courses online, but beware – some courses require fees, while others are part of an open courseware project.
  18. Webcast.Berkeley: The University of California at Berkeley offers Webcasts of current and archived courses, prominent speakers and on-campus events.
  19. Weber State University: This OpenCourseWare project contains courses in subjects such as automotive technology, criminal justice, information systems and technology and more.
  20. Western Governors University: This project contains various courses listed under information technology and liberal arts.
  21. Columbia University Interactive — A gateway to selected electronic learning resources developed at Columbia University.
  22. Berklee Shares — Free music lessons that you can download, share and trade with your friends and fellow musicians.
  23. Carnegie Mellon Open Learning Initiative — OLI courses are designed to support you to learn a subject at the introductory college level.
  24. Duke Law Center for the Public Domain — News, lectures, links to various other resources within the site and on the Web. Projects range from the arts to international law issues.
  25. Fulbright Economics Teaching Program — FETP is a resource for people who work or study in policy-related fields to increase their knowledge and explore new approaches to learning and curriculum development.
  26. Harvard Extension School — Course-related materials are supported by videotaped lectures.
  27. Gresham College — Find lectures in various topics that are also available as audio and video files.
  28. Johns Hopkins Bloomberg School of Public Health — This project provides access to content of the School’s most popular courses, from adolescent to refugee health.
  29. Open University — Originating from the U.K., this collection ranges from arts and history to technology.
  30. United Nations University — UNU promotes the idea of a Global Learning Space for science and technology.
  31. University of California, Irvine — This college offers the California Subject Examination for Teachers (CSET) and a few other courses.
  32. University of Notre Dame — From Africana studies to theology, students can take advantage of options within numerous Notre Dame departments.
  33. University of Washington — This one is a bit tricky, as they offer free online courses through this link, but you can also find free materials through various departments outside this official online learning program.

The following are not directly affiliated with a specific university:

What is Portable Class Library project in Visual Studio 2012– .NET 4.5

You can download from Windows Store at

I recently installed Visual Studio 2012 Ultimate edition on Windows 8 RC and noticed Portable Class Library project in the New Project Dialog, which immediately made me to research on what PCL is about. Following is my findings about PCL from the web.

The need for portable .NET Framework code

Developers have seen a diversification of computing platforms over the last few years – PCs, phones, cloud, Xbox, and tablets. It often makes sense to target more than one of these platforms from your app. For example, most client apps and games that are built today call into a server component to retrieve and save data (for example, a set of high scores, a list of friends, a grocery list, or a new expense report). .NET developers often create rich object models that describe that data, and expect to code to that object model on both the client and the server. Wouldn’t it be even better if you could write, compile, and test that common code just once? That’s exactly what portable class libraries enable you to do.

Many of you have asked for the option to reuse assemblies (binaries), not just source code, across projects. Sharing code across projects creates more commonality across those projects, which makes you and your team more efficient. I would guess, however, that many of you share code today by either creating copies of common code for each project, with slight modifications, or maintain a common copy that contains a significant number of conditional compilation directives. These approaches to source code reuse are relatively easy to employ initially, especially in small code bases. As your product codebase grows, you may find that these source-sharing strategies start to scale poorly. You’ll start to wonder what you need to do to share binaries instead. The APIs across the .NET Framework platforms are generally the same, so binary reuse should just work, and that’s what many of you expect.

Portable class libraries enable you to create and compile code that can run on multiple .NET Framework platforms. You can build a library that is usable across all your projects. Whatever that library does, it will do that same thing in all the apps or websites/services that you build. You avoid having multiple copies of the code or managing a set of conditional compiler directives in a common copy. For app developers who have a few common dependent libraries across a suite of apps, this feature is a pretty significant win. It is also a huge step forward for library developers who make their assemblies available to a large audience of developers who build apps for a variety of Microsoft platforms. We’ve seen library developers creating several variants of their work, one for each .NET Framework platform. Portable class libraries either remove that need completely or scope the degree of differences that needs to be supported to something smaller and more manageable.

There are different kinds of .NET frameworks available. There is the .NET Framework, but .NET is also in Silverlight, the Windows Phone, the Xbox, Metro (Windows 8) etc. If you create a regular Class Library it has a single Target Framework. However, if you are doing a multi-platform application and you want to maximize your code reuse, you can run into trouble as you may not have all libraries available on the smaller platforms.

Thus, Portable Class Libraries were created. These Portable Class Libraries (PCLs) will generate a managed assembly that can be referenced by Windows Phone 8, Windows 8 Metro, Silverlight 5, the Microsoft .NET Framework (Client profile) and Xbox 360 platforms. This can really help to maximize reuse of your code and reduce the number of required projects, particularly in multi-targeted applications solutions that share the same codebase

Prior to PCL projects, solution projects could only reference assemblies of the same platform. Silverlight projects referenced other Silverlight assemblies, .NET projects other .NET assemblies and so on. To code effectively, we could accumulate an unmanageable number of projects; when creating shared codebases (code that can be used across all platforms), we’d have to create a project for each platform.

Once you reference another project, your project can become tightly coupled, forcing you to drag not only it, but also any dependencies it has, to the other projects. If you only have a few projects, it makes it increasingly more difficult to reuse the code in other solutions.

A PCL can significantly reduce the number of projects you have to manage, particularly if you want to have a clear separation of concerns permitting you to easily reuse your projects in other modules or solutions. The key is to keep your projects loosely coupled by programming against interfaces. This will permit you to use DI frameworks, such as the Managed Extensibility Framework (MEF) and Unity, which allow you to easily configure the implementation for the interfaces. That is, the DAL implementation for interfaces could be SQL Server, the cloud or SQLite classes.

Some of the key point to using PCL are as follows:

Write once, use everywhere : Portable Class Library is a new project in Visual Studio from Microsoft that enables you to create C# and Visual Basic libraries that run on a variety of .NET-based platforms without recompilation.

Simplify code sharing : No more complicated build scripts or #defines, and stop copying and pasting code for different platforms; portable libraries enable you to easily share code between apps that target different platforms.

Share between platforms : Create a Portable Library project and reference it from any .NET Framework, Silverlight, Windows Phone or XNA project as shown in Fig 1.



Fig 1: Example of using PCL in different apps that target different platforms

The Portable Class Library project enables you to write and build managed assemblies that work on more than one .NET Framework platform. You can create classes that contain code you wish to share across many projects, such as shared business logic, and then reference those classes from different types of projects.

Using the Portable Class Library project, you can build portable assemblies that work without modification on the .NET Framework, Silverlight, Windows Phone 7, or Xbox 360 platforms. Without the Portable Class Library project, you must target a single platform and then manually rework the class library for other platforms. The Portable Class Library project supports a subset of assemblies from these platforms, and provides a Visual Studio template that makes it possible to build assemblies that run without modification on these platforms. [Source =]

Target Platforms Determine Available APIs

Within a Portable Class Library project, you can specify which .NET platforms the library is intended to run on.  Although there is a ‘core’ set APIs that are available on all platforms, there are also some APIs that are only available on certain platforms.  An example of an API that exists on some platforms but not others is MEF.  Windows Phone and Xbox 360 do not currently have built-in support for MEF, but .NET and Silverlight do.  If you want to use MEF within a portable library, the library will currently only run on .NET and Silverlight.

When you specify the platforms you want to target in a Portable Class Library project, only the supported assemblies for those platforms are referenced in your project. If you try to reference an assembly that is not supported for the platforms you have targeted, Visual Studio warns you of the incompatibility. The core assemblies (mscorlib.dll, System.dll, System.Core.dll, System.Xml.dll, and System.Xml.Serialization.dll) are supported on all versions of all platforms.

If you target only the .NET Framework 4.5 RC and .NET for Metro style apps, you have access to a much larger set of assemblies than is available in other platform combinations. This larger set of assemblies is almost identical to the .NET APIs for Metro style apps, but doesn’t include the classes in the Windows.UI.Xaml namespaces. For more information, see .NET for Metro style apps in the Windows Dev Center.

Thus, the project’s selected target platforms determine which APIs can be used within the project.  The APIs that are shown in intellisense and available to the compiler are automatically filtered based on the selected target platforms, so you don’t need to have any special knowledge about each platform or worry about inadvertently using an API that doesn’t exist on a platform that you’re targeting.  The project system takes care of this for you.

In the future, as the underlying platforms evolve to support more APIs that could be portable, MS will update the API surface available to portable libraries as appropriate.

Supported scenarios : We used the following main scenarios to define the scope and direction of portable class libraries:

  • Call BCL APIs
  • Use the latest language features, such as dynamic programming, async and LINQ
  • Read and write XML
  • Call HTTP URIs, specifically for REST-style end-points
  • Call WCF services
  • Build Model-View-View Model (MVVM) patterns
Supported platforms : It’s easy to support the scenarios listed above for one or two .NET Framework platforms, but MS needed to reach farther and support a broader set of platforms. In Visual Studio Professional 2012 RC, the Portable Class Library project supports the following .NET Framework platforms:
  • .NET Framework 4, Update 4.0.3 for the .NET Framework 4, and .NET Framework 4.5
  • .NET for Metro style apps
  • Windows Phone 7.x and higher
  • Silverlight 4 and 5
  • Xbox 360

The following table summarizes the high-level functionality currently available on each platform:


Fig 2. Supported portable class library features and scenarios

Following is some of the important features and the respective assemblies.

Core :mscorlib.dll, System.dll, System.Core.dll, System.Xml.dll, System.Xml.Serialization.dll

Managed Extensibility Framework(MEF):System.ComponentModel.Composition.dll

Network Class Library (NCL) : System.Net.dll

Serialization : System.Runtime.Serialization.dll

Windows Communication Foundation (WCF) : System.ServiceModel.dll, System.ServiceModel.Web.dll

Model-View-View Model (MVVM) : System.Windows.dll

Data annotations : System.ComponentModel.DataAnnotations.dll

LINQ to XML : System.Xml.Linq.dll

Constraints of PCL: The only constraint is that the PCL can’t reference platform-specific projects; it can only reference other PCL projects. On the surface this can appear limiting, especially for applications that utilize Prism and dependency injection (DI). But with careful planning, you can work around this constraint and create efficient PCL projects that will help enforce good development practices.