Introduction
Purpose
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 various types of projects more.
To install the Portable Class Library on your machine you can use Visual Studio 2010, save the download file (PortableLibraryTools.exe) on your computer, and run the installation program from a Command Prompt window. Include the /buildmachine switch on the command line.
The following assemblies are used for a Portable Class Library:
-
mscorlib.dll
-
System.dll
-
System.Core.dll
-
System.Xml.dll
-
System.ComponentModel.Composition.dll
-
System.Net.dll
-
System.Runtime.Serialization.dll
-
System.ServiceModel.dll
-
System.Xml.Serialization.dll
-
System.Windows.dll (from Silverlight)
The following are the steps to create a Portable Class Library in Visual Studio 2011.
Step 1: Create a new project and choose the Portable Class Library.

Step 2: Now go to project properties and select the Library tab and click on the change button; you will see the Change Target Framework Dialog box; there you can select the framework for your library.

Reference from

Lekshmi SeditedPosted Mar 13, 2013, 2:10 AMEdited Mar 13, 2013, 2:12 AM
Hi, when I try to add a Microsoft.Csharp reference it displays 'This assembly requires retargeting' in Visual Studio 2012. Please help..
shruti vashistPosted Dec 19, 2012, 12:12 PM
Hi Amit, I am working on a Windows Phone app to develop a window app that will show notifications for the unread emails from exchange server once the user configures the server with our app. The first issue was that I was not able to add the reference of Microsoft.Exchange service to Windows Phone project directly, So I added this by using the portable class library. But now the issue is when I add the exchange reference to Portable Class project and then use this reference in the same project via Using statement in my .cs file, I got the error "The word or namespace Exchange does not exist. Are you missing an assembly reference" . I am stuck to this error. Tried every solution to solve it but no gain. Any help on this will be really appreciable. Thanks in advance.