2016-07-22 112 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 

}