繁体   English   中英

nuget库中的预处理器指令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM