2016-07-22 2 views
0

Je ne comprends pas vraiment ces directives de préprocesseur ce que je dois écrire. Je développe une bibliothèque qui devrait fonctionner pour de nombreux frameworks, par ex. .net framework 4.5, 4.6, ... et pour mon application qui fonctionne avec le framework .NETStandard Version 1.5 -> donc je suppose que c'est dnxcore50?directive de préprocesseur dans la bibliothèque de 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 
} 

donc ce que je suis pour l'instant, mais MyMethod n'est pas disponible avec tout autre cadre. L'utilisation de #if DOTNETCORE50 ne fonctionne pas non plus.

J'ai également essayé de définir des contraintes, mais mon projet ne se charge pas lorsque j'essaie.

Une idée quelle est la bonne solution?

+0

connexes: http://stackoverflow.com/questions/3436526/detect-target-framework-version-at-compile-time –

+0

@x ... J'ai essayé déjà mais après avoir modifié mon fichier de solution, le chargement du projet échoue toujours. –

+0

Pas de fichier de solution, fichier de projet. Vous éditez le mauvais fichier. –

Répondre

0

Il n'est plus nécessaire de les définir dans le fichier projet/solution.

Donc, je viens de poster une réponse correspondant à l'état actuel (quelques-uns sont toujours portés disparus comme net47 et ainsi de suite, mais vous savez ce que je veux dire):

#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 

de quelle façon ils sont maintenant compatibles ou redondant, je ne sais pas. Mais ce sont les noms actuels que je connais.

alors vous pouvez

public class MyClass 
{ 

#if NetFramework 
    public void MyMethod() 
    { 
     Console.WriteLine("framework is supported"); 
     // and do anything with libraries available in the framework :) 
    } 
#endif 

}