如何判断代码是为常规.NET还是.NET Core编写的?

时间:2018-07-23 19:06:33

标签: c# .net .net-core

我使用的代码库包含常规.NET中的一些代码和.NET Core中的一些代码。当我打开一个单独的.cs文件时,我并不总是确定该文件是否应使用常规.NET或.NET Core进行编译。显然,这两个框架之间有很多重叠之处-并且两个框架中的许多代码都可以在未修改的情况下运行。

所以我的问题是,有几种简单的方法可以确定.cs文件是否打算针对常规.NET或.NET Core进行编译?

(我想,寻找仅在一个框架或另一个框架中存在的某些用途可能是最大的告示标志。如果确实是确定此用途的方法,那么是否存在一个网页,其中列出了哪些用途是常规用途所独有的.NET与.NET Core?)

3 个答案:

答案 0 :(得分:4)

Microsoft有一个Portability Analyzer,它会告诉您代码是否可以在各种平台上运行以及需要进行哪些更改,但这是我知道告诉特定平台代码编写的唯一方法< / em>用于检查项目属性或makefile。

答案 1 :(得分:4)

您最好的选择是查看.csproj文件。

寻找<TargetFramework><TargetFrameworks>元素。它将具有诸如net461之类的条目。您可以在此处与图表进行交叉引用:

https://docs.microsoft.com/en-us/dotnet/standard/frameworks

答案 2 :(得分:2)

您还可以使用if预处理器指令,例如:

public class MyClass
{
   static void Main()
   {
#if (NETCOREAPP1_0 || NETCOREAPP1_1 || NETCOREAPP2_0 || NETCOREAPP2_1)
        <some code>
#else
        <some code>
#endif
   }
}

我应该补充一点,这是一种可以继续使用的方法,尤其是在NetFramework和Core之间使用共享代码的情况下。