как определить, является ли приложение.net "основным" приложением?

Мне нужно обновить новое приложение.NET, и я думаю, было упомянуто, что это был.NET Core. Как я могу проверить свойства решения, чтобы определить, действительно ли это "основное" приложение?

Веб-проект имеет ссылку на System.Core, но я искал это, и кажется, что System.Core.dll является частью платформы.NET с по крайней мере.NET f/w 3.5.

Приложение имеет файл package.json, но наличие этого файла в sln не обязательно гарантирует, что приложение является основным ядром.NET. Я также прочитал, что основное ядро приложения.NET может работать в разных версиях.NET Framework.

Итак, как я могу определить, действительно ли приложение.NET действительно является "основным" приложением? Другими словами, что делает приложение Core основным приложением?

Ответ 1

Обновлено для.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 для 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 или новых консольных приложений на основе 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. Таким образом, просто приложение ASP.NET Core не очень много говорит о платформе, на которую оно нацелено.

Ответ 2

Определить приложение Asp.net Core довольно просто.

Есть некоторые идентификаторы. В проекте мало файлов, которые помогают определить Core Project

Файлы, подобные

  • 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 Core приложение ссылается на Microsoft.NETCore.App (либо как "тип": "платформа" для портативных приложений, либо без него для автономных приложений).

Основное приложение Asp.net основано на платформе, поэтому приложение ASP.NET Core мало что говорит о платформе.