nuget 库中的预处理器指令
preprocessor directive in nuget library
我真的不明白我要写的那些预处理器指令。
我正在开发一个适用于许多框架的库,例如.net framework 4.5, 4.6,... 以及我使用 framework .NETStandard
Version 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
也不起作用。
我也尝试过定义约束,但是当我尝试这个时我的项目加载失败。
知道什么是正确的解决方案吗?
不再需要在 project/solution-file 中定义它们。
所以,我只是 post 一个与当前状态匹配的答案(一些仍然缺失,如 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
}
我真的不明白我要写的那些预处理器指令。
我正在开发一个适用于许多框架的库,例如.net framework 4.5, 4.6,... 以及我使用 framework .NETStandard
Version 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
也不起作用。
我也尝试过定义约束,但是当我尝试这个时我的项目加载失败。
知道什么是正确的解决方案吗?
不再需要在 project/solution-file 中定义它们。
所以,我只是 post 一个与当前状态匹配的答案(一些仍然缺失,如 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
}