как определить, является ли приложение .net "ядром" & ldquo; core & rdquo; приложение?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

26
задан user7066345 9 November 2016 в 02:06
поделиться

2 ответа

Обновлен для .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 Ядро тоже.

При этом ASP.NET Core - это веб-стек, который может работать как на полной .NET Framework (4.5 или выше), так и на .NET Core. Так что наличие приложения ASP.NET Core мало что говорит о платформе, на которую оно нацелено.

8
ответ дан Tseng 9 November 2016 в 02:06
поделиться

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

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

, таких как

  • project.json
  • appsetting.json
  • . cs

Внутри project.json он включает в себя

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

Здесь по dependencies можно определить тип проекта. Приложение ядра Core ссылается на Microsoft.NETCore. Приложение (либо как «тип»: «платформа» для переносимых приложений, либо без него для автономных приложений).

Базовое приложение Asp.net не зависит от платформы, поэтому в базовом приложении ASP.NET не очень много говорится о платформе.

1
ответ дан Jani Devang 9 November 2016 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: