Совместимость пакета Nuget для.net core и.net framework 4.6

Я создал пакет nuget, который поддерживает.net Framework и.net core. Но у одного класса есть ссылки, доступные только для ядра.net. Мне не нужно, чтобы этот класс был доступен в.net framwork

Есть ли какой-либо атрибут или способ, который исключает этот класс при сборке пакета для.net framweork?

Вот как я нацеливаюсь на фреймворки

<TargetFrameworks>netcoreapp2.0;netstandard2.0;net45;net46</TargetFrameworks>

1 ответ

Просто используйте условные символы компиляции, которые будут предоставляться автоматически для каждой цели. Например:

// Put this at the start of the file (if you want some of the file to still be built)
// or class (if you just want to exclude a single class). You could even
// exclude just a single method, or part of a method.
#if NETCOREAPP2_0 || NETSTANDARD2_0

public class NetFrameworkOnlyClass
{
}

// And this at the end
#endif

Или вместо того, чтобы включить, вы можете исключить, как это:

#if !NET45 && !NET46

См. Учебник по кроссплатформенной библиотеке для списка символов условной компиляции, определенных в каждой среде. (Я думаю, что было бы неплохо иметь нейтральную версию " NETCORE "," NETSTANDARD " а также " NETFULL "символы или аналогичные, но я не верю, что они существуют. Вы можете указать их в файле проекта, если хотите.)

Другие вопросы по тегам