为 .NET Core >= 2.x 和/或 VS2017 更新
在 VS2017 .NET Core 项目中再次使用 .csproj 结构。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreappx.y</TargetFramework>
</PropertyGroup>
或
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandardx.y</TargetFramework>
</PropertyGroup>
.NET Core 1.x 和 VS2015 的旧答案
有一些指标。
project.json 的存在表明它是较新的项目形式之一(请注意,尽管 project.json 将与 .NET Core/.NET Core Tools for VS 版本 1.1 一起消失)。
在里面,你会有一个框架部分,比如
"frameworks": {
"net45": {
"frameworkAssemblies": {
"System.Runtime.Serialization": "4.0.0.0"
}
},
"netstandard1.0": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
}
},
"netstandard1.3": {
"imports": [ "dnxcore50", "portable-net45+win8" ],
"dependencies": {
"System.Runtime.Serialization.Formatters": "4.0.0-rc3-24212-01"
}
}
}
如果是应用程序(ASP.NET Core Web 项目或新的基于 project.json 的控制台应用程序),netstandard1.x 将被命名为 netcoreapp1.0。
如果有多个条目,则应用程序或库针对多个平台(并将在不同的文件夹中构建多个二进制文件)。
更新
当然,我忘记了另一个指标。 .NET Core 应用程序确实引用了Microsoft.NETCore.App(对于便携式应用程序,可以使用"type": "platform",对于自包含应用程序,可以不使用它)。 netstandard1.x(类库)参考NETStandard.Library。
.NET Core 应用程序基于 System.Runtime,它是 .NET Framework 4.5 和更新版本的一部分,用于 Windows(和 Windows Phone)8.0/8.1/10 应用程序,因此 portable-net45+win81 包与 .NET 兼容核心也是。
话虽如此,ASP.NET Core 是一个 webstack,可以在完整的 .NET Framework(4.5 或更高版本)和 .NET Core 上运行。因此,仅仅拥有一个 ASP.NET Core 应用程序并不能说明它所针对的平台。