[英]preprocessor directive in nuget library
我真的不明白那些预处理器指令我要写什么。 我正在开发一个库,该库应适用于许多框架,例如.net framework 4.5、4.6,...以及适用于以.NETStandard
版本1.5->运行的应用程序,所以我想这是dnxcore50
吗?
public class MyClass
{
#if DOTNET5_4
// do nothing
#else
public void MyMethod()
{
Console.WriteLine("framework is supported");
// and do anything with libraries available in the framework :)
}
#endif
}
所以这是我现在得到的,但是MyMethod
在任何其他框架中均不可用。 使用#if DOTNETCORE50
也不起作用。
我也尝试定义约束,但是尝试此操作时我的项目无法加载。
知道什么是正确的解决方案?
不再需要在项目/解决方案文件中定义它们。
因此,我只发布了与当前状态匹配的答案(仍然缺少诸如net47等,但您知道我的意思):
#if (NET45 || NET451 || NET46 || NET461)
#define NetFramework
#endif
#if (NETSTANDARD1_0 || NETSTANDARD2_0 || NETSTANDARD1_5 || NETSTANDARD1_3 || NETSTANDARD1_6 || NETCOREAPP1_0 || NETCOREAPP1_1 || NETCOREAPP2_0)
#define NetCore
#endif
我不知道它们现在以什么方式兼容或冗余。 但这是我知道的当前名称。
那么你也能
public class MyClass
{
#if NetFramework
public void MyMethod()
{
Console.WriteLine("framework is supported");
// and do anything with libraries available in the framework :)
}
#endif
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.