已更新,支持 .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 Version 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项目或基于new 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 Core兼容。
话虽如此,ASP.NET Core是一个Web堆栈,可以在完整的.NET Framework(4.5或更高版本)和.NET Core上运行。因此,仅拥有ASP.NET Core应用程序不能告诉我们太多关于它所针对的平台。