В многозадачном проекте мне доступны только ресурсы более ограничительной структуры? - PullRequest
0 голосов
/ 08 февраля 2019

Предположим, у меня есть многоцелевой проект, примерно такой:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <PackageId>Bugsnag</PackageId>
    <Title>Bugsnag .NET Notifier</Title>
    <TargetFrameworks>net35;net40;net45;netstandard1.3;netstandard2.0</TargetFrameworks>
  </PropertyGroup>
</Project>

Я нацеливаюсь на net35, net40, net45 и другие.Net40 имеет функции, которых нет у net35, а net45 имеет функции, которых нет у net40.

Так что я сомневаюсь, что, когда я кодирую свое приложение, мне доступны все функции net45?И если это правда, как это возможно, может ли он скомпилироваться, если, например, у net35 нет некоторых функций, которые я использую?

Большое спасибо.

1 Ответ

0 голосов
/ 08 февраля 2019

Когда вы нацеливаетесь на несколько платформ, вы должны использовать условные ссылки и символы препроцессора для работы с функциями, которые не поддерживаются всеми целевыми платформами.

Допустим, вы нацелены на .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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...