簡體   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