Когда вы нацеливаетесь на несколько платформ, вы должны использовать условные ссылки и символы препроцессора для работы с функциями, которые не поддерживаются всеми целевыми платформами.
Допустим, вы нацелены на .NET 4.0 и 4.5:
<PropertyGroup>
<TargetFramework>net40;net45</TargetFramework>
</PropertyGroup>
Если у вас есть необязательная зависимость, которая использует платформу 4.5, но не 4.0, вы можете условно ссылаться на нее в своих проектах:
<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
<Reference Include="Referenced.Assembly.Name" />
</ItemGroup>
Возможно, вам также понадобится использовать ее для ссылки на разные версиизависимости для каждого фреймворка.
В вашем коде вы можете использовать символы препроцессора, чтобы гарантировать, что новые функции фреймворка не выдают ошибок при построении на более старом фреймворке:
public void Example()
{
#if NET45
// Implementation that uses the 4.5 framework
#else
// Implementation that uses the 4.0 framework
#endif
}
Полная документациядля фреймворков с несколькими целями можно найти здесь:
Target Frameworks |Документы Microsoft