2016-07-22 100 views
0

我不太了解那些预处理器指令我必须写的东西。 我正在开发一个适用于许多框架的库,例如.net框架4.5,4.6,...和我的应用程序运行框架.NETStandard版本1.5 - >所以我想这是dnxcore50nuget库中的预处理器指令

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也不起作用。

我也尝试过定义约束,但是当我尝试这个时,我的项目无法加载。

任何想法什么是正确的解决方案?

+0

相关:http://stackoverflow.com/questions/3436526/detect-target-framework-version-at-compile-time – 2016-07-22 19:08:02

+0

@x ......我想这已经但在更改我的解决方案文件后,项目始终无法加载。 –

+0

没有解决方案文件,项目文件。你编辑错误的文件。 – 2016-07-22 23:49:09

回答

0

不需要在项目/解决方案文件中再定义它们。

所以,我只是发布一个答案符合当前的状态(一些人仍然失踪像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 

}