I finally got around to playing around with VS11. I created a solution with the following projects:

C# console application

C# WPF application

C# Metro application

C# standard .NET class library

C# .NET portable class library

C# Metro class library (can also be used to create WinRT library)

Each of the class libraries has a public class declaration with a static HelloWorld() method returning a string.

I referenced each of the class libraries in the 3 different applications. This is what happened:

Console application: Compiler error because of the Metro class library, which required reference to System.RunTime.dll, which VS didn't add to the project by default. It's also not found in the regular reference assembly folder for .NET 4.5. I had to dig in the.NET 4.0 framework folder in c:\windows\microsoft.net\framework64\ to find it. Once I added this assembly, the application compiled, but I still got a compiler warning. However, the application ran fine and was able to call HelloWorld() from all three class libraries.

WPF application: Same results as console application.

Metro application: Compiler warning because of the reference to the standard .NET class library, but it was fine with the portable class library. The application ran fine, and HelloWorld() from all three libraries worked.

I'm not sure what the deal is with the compiler warnings, but there seems to be some interoperability between Metro and .NET class libraries/applications, even if it wasn't intended.