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

时间:2016-11-09 02:06:36

标签: c# .net 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应用程序?

2 个答案:

答案 0 :(得分:8)

针对.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将随着版本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"
    }
  }
}

如果是应用程序(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核心应用程序并不能说明它所针对的平台。

答案 1 :(得分:1)

确定Asp.net Core应用程序非常容易。

有一些标识符。 项目中的文件很少,有助于确定核心项目

这样的文件
  • project.json
  • appsetting.json
  • startup.cs

在project.json中,它包含

"dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
"frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

这里通过dependencies可以确定项目的类型.NET核心应用程序确实引用了Microsoft.NETCore.App(作为&#34;类型&#34;:&#34;平台&#34;便携式应用程序或没有它的自包含应用程序)。

Asp.net核心应用程序与平台无关,因此ASP.NET核心应用程序对该平台没有太多表达。