针对.net核心和.net框架4.6的Nuget包兼容性

时间:2018-04-13 06:13:27

标签: c# .net-core nuget-package .net-framework-version

我创建了一个nuget包,它支持.net框架和.net核心。 但是其中的一个类只有.net核心可用的引用。 我不需要在.net framwork中提供该课程

是否有任何可用的属性或方法,在为.net framweork构建包时排除该类?

这就是我的目标框架

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

1 个答案:

答案 0 :(得分:6)

只需使用将在每个目标基础上自动提供的条件编译符号。例如:

// 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

有关每个环境中定义的条件编译符号的列表,请参阅cross-platform library tutorial。 (我认为让版本中立&#34; NETCORE&#34;,&#34; NETSTANDARD&#34;和&#34; NETFULL&很高兴#34;符号或类似符号,但我不相信那些存在。如果您愿意,可以在项目文件中指定它们。)