Is there any guidance on converting existing .NET class libraries to portable libraries?

Mark Stafford - MSFT picture Mark Stafford - MSFT · Jun 29, 2012 · Viewed 16.6k times · Source

I have some class libraries with a non-trivial amount of existing code. The class libraries currently target .NET 4.0. Is there any guidance on how to convert these libraries to be portable libraries? From looking at the .csproj, it doesn't appear that there are a lot of differences:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

and

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Is it a good or bad idea to try converting an existing class library to be a portable library?

Answer

DerDani81 picture DerDani81 · Aug 15, 2012

We also converted existing libraries to portable libraries and it works fine. You have to modify the project file. Replace the following line:

<Import Project="..." />

with

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

Add following line inside a PropertyGroup tag

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

And remove following lines from the AssemblyInfo.cs file

[assembly: ComVisible(false)]
[assembly: Guid("...")]

After that, Visual Studio should show you the Tab page "Library" in the project Property page and you can change the target frameworks for the portable library.