C# nuget库中的预处理器指令

C# nuget库中的预处理器指令,c#,.net-core,preprocessor-directive,C#,.net Core,Preprocessor Directive,我真的不明白那些预处理器指令我必须写些什么。 我正在开发一个库,它应该适用于许多框架,例如NETFramework4.5、4.6,。。。对于我的应用程序,它运行的框架是.NETStandardversion1.5>,所以我猜这是dnxcore50 public class MyClass { #if DOTNET5_4 // do nothing #else public void MyMethod() { Console.WriteLine("frame

我真的不明白那些预处理器指令我必须写些什么。 我正在开发一个库,它应该适用于许多框架,例如NETFramework4.5、4.6,。。。对于我的应用程序,它运行的框架是
.NETStandard
version1.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
不适用于任何其他框架。如果DOTNETCORE50也不起作用,请使用

我还尝试定义约束,但尝试此操作时无法加载我的项目


知道什么是正确的解决方案吗?

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

所以,我只是发布了一个与当前状态匹配的答案(有一些仍然缺少,比如net47等等,但你知道我的意思):

我不知道它们在什么方面是兼容的还是冗余的。但这是我现在知道的名字

那你可以

public class MyClass
{

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

}

相关:@x。。。我已经尝试过了,但是在更改解决方案文件后,项目总是无法加载。不是解决方案文件,而是项目文件。您编辑了错误的文件。您获得的信息(如DNX和NETCORE50)已过期。当Mocrosoft上个月发布.NETCore1.0时,一切都发生了变化,所以您必须从新开始。不幸的是,如果你在.NET博客上查看最新的路线图,事情又变了。@MatthiasBurger这是微软第一次以完全开放的方式开发一个全新的平台,因此我们可以观察曲折(过去是他们的内部聊天)。所以我认为这样的改变在所有方面都不是坏事,因为它会导致更多的意识(尽管也会引起混乱)。对于大多数开发人员来说,他们应该等到今年秋天的VisualStudio发行版,该版本完成了工具并填补了空白。
public class MyClass
{

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

}