Да, используя директивы, определяющие эти платформы. Теперь я не совсем уверен, если есть директива .NET, 4.5 автоматически доступны, но, насколько я знаю, что есть в
#SILVERLIGHT
, #WINDOWS_PHONE
, #WP8
и #NETFX_CORE
директивы доступны.
Вы можете использовать их как это:
#if WINDOWS_PHONE
int x = 1;
# else
int x = 2;
#endif
В вашей ситуации вы бы разместить их по методу так что метод будет только компилируется, если правильные проекты целенаправленные.
Я считаю, что #NETFX_CORE
указывает только, что это Windows 8, а не .NET. Могут быть специфические директивы .NET, но они не устанавливаются автоматически для проектов, к которым вы обращаетесь (возможно, потому, что они используют WinRT, а не .NET per sé).
Однако this answer означает, что вы можете установить его с помощью пользовательской директивы:
<DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">
RUNNING_ON_4
</DefineConstants>
Это скорее поражает точку проекта PCL. Если вы собираетесь заставить себя создавать отдельные сборки, просто не беспокойтесь об этом. –