Совместимость пакета 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
"символы или аналогичные, но я не верю, что они существуют. Вы можете указать их в файле проекта, если хотите.)