2016-07-22 22 views
0

私が書かなければならないプリプロセッサディレクティブは本当に分かりません。 私は多くのフレームワークで動作するライブラリを開発しています。 .netフレームワーク4.5,4.6、...、フレームワーク.NETStandardバージョン1.5 - >私はこれがdnxcore50だと思いますか?Nugetライブラリのプリプロセッサディレクティブ

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 –

+0

@x ...私はすでにこれを試してみましたソリューションファイルを変更した後は、プロジェクトは常に読み込みに失敗します。 –

+0

プロジェクトファイルではないソリューションファイルです。間違ったファイルを編集します。 –

答えて

0

これをproject/solution-fileでもう定義する必要はありません。

だから、私は(少数はまだ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 

} 
関連する問題