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