如何确定.net应用程序是否是"核心"应用程序?

use*_*345 27 .net c# asp.net-core

我需要更新一个新的.NET应用程序,我认为有人提到它是.NET Core.如何检查解决方案属性以确定它是否实际上是一个"核心"应用程序?

Web项目有一个System.Core引用,但我搜索了这个,似乎System.Core.dll已经成为.NET框架的一部分,因为至少.NET f/w 3.5.

该应用程序有一个package.json文件,但在sln中存在该文件并不一定保证该应用程序是.NET核心应用程序.我还读到.NET核心应用程序可以在不同的.NET框架版本上运行.

那么如何确定.NET应用程序是否确实是"核心"应用程序?换句话说,什么使Core应用程序成为Core应用程序?

Tse*_*eng 9

已针对.NET Core> = 2.x和/或VS2017进行了更新

在VS2017中,.NET Core项目再次使用.csproj结构.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreappx.y</TargetFramework>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

要么

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandardx.y</TargetFramework>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

.NET Core 1.x和VS2015的旧答案

有一些指标.

存在project.json表明它是较新的项目形式之一(请注意,虽然这project.json将与版本1.1的VS的.NET核心/ .NET核心工具一起消失).

在它里面,你会有一个框架部分,比如

"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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在应用程序(ASP.NET Core Web Project或基于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是一个可以在完整的.NET Framework(4.5或更高版本)和.NET Core上运行的webstack.因此,拥有一个ASP.NET核心应用程序并不能说明它所针对的平台.