Ответ 1
У вас много вопросов. Для этого нет единой документации, потому что вопросы не такие простые;)
global.json
- global.json build system: global.json(as project.json) не указывают систему сборки (кроме файлов msbuild csproj). Пока доступно только
dotnet build
(проксируется msbuild xproj при использовании в VS). Это изменится наmsbuild
, потому что полная оснастка находится в предварительном просмотре/бета-версии и не будет выпущена в конце июня. Он запускает все дочерние папки и создает материал. Это также корень node для поиска локальных ссылок на проект. - global.json sdk: Это sdk, используемый для сборки. Новый cli также поддерживает несколько sdks, и я думаю, который все еще используется для выбора.
project.json
- project.json список фреймворков: рекомендую прочитать , и там вы найдете список текущих прокси-серверов. Этот документ также разрешит многие другие вопросы, которые у вас могут (есть). Полный список находится в Документах проекта NuGet, но список снова устарел и не так полезен. Вы ссылаетесь на пример
netcore
для UWP (время выполнения также называется .NET Core), а кросс-платформенная.NET Core
используетnetcoreapp
, которая полностью отсутствует в документации NuGet. - project.json import: вы получаете здесь неправильную цель. В project.json вы указываете целевые структуры, для которых реализуются реализации вашей библиотеки (например,
netstandard1.6
иnet451
). Операторimport
используется для зависимостей, которые вы указываете для целевой структуры, и в основном говорит: Если TFM (например,netstandard1.6
) не существует в справочной библиотеке (поскольку NuGet был создан некоторое время назад), я также принимаю эти импортированных один раз (например, устаревшиеdotnet5.6
илиdnxcore50
). В настоящее время это утилита для разрыва NuGet и позволяет использовать библиотеки, которые еще не перемещены в новые TFM. Он ничего не говорит о вашем проекте, но какие версии ваших зависимостей вы принимаете для использования. Для каждой целевой структуры требуется отдельная спецификация, потому что принятие реализаций библиотек NuGet может отличаться для каждой целевой структуры. - Использование импорта project.json: ну, используйте то, что вам нужно, и удалите все, что вам не нужно. Вы получите ошибки, когда ссылаетесь на NuGets, которые еще не были перенесены в новый TFM.
dnxcore
иdotnet
сохраняют ставки в проектах .NET Core, потому что они использовались до того, как были введены текущие прозвищаnetstandard
иnetcoreapp
. Просто не будьте смелыми, чтобы добавить, например.net461
/mscorlib основанные на NuGet реализации вnetstandard
/System.Runtime основе целевой структуры. Это не работает и является распространенной ошибкой.
зависимостей
- dotnet новый шаблон по умолчанию: Да, для приложений ASP.NET и консолей, которые всегда являются правильным выбором. Однако это просто консольное приложение (веб-приложения также являются консольными приложениями). Используйте Visual Studio для создания новых проектов ASP.NET Core или yoman под Linux для расширенного шаблонирования.
dotnet new
не является полностью раздутой системой лесов. Новый шаблон использует целевую структуруnetcoreapp
и мета-пакетыMicrosoft.NETCore.App
для импорта в основном всех доступных библиотек базового класса. Если вы хотите создать библиотеку, переключитесь наnetstandard
целевую структуру и зависеть отNETStandard.Library
. Вы можете добавить другие зависимости. Для ядра ASP.NET прямой мета-пакет недоступен. Руководство заканчивается здесь. Существует процесс под названием обрезка, в котором вы удаляете эти метапакеты и вместо этого добавляете конкретные зависимости. Но для этого еще нет инструментов. - Зависимости сборки/платформы project.json: зависимости
build
- это, по сути, инструменты, которые не публикуются во время сборки. Когда вы знаетеnpm
, вы знаете эту схему какdevDependencies
.platform
зависимости - это, по сути, зависимость, которая не развертывается вместе с вашим приложением, а как часть общей базовой установки .NET Core SDK. Вы найдете руководство здесь под термином "переносное приложение" (то естьplatform
) и "автономное приложение" (то есть без него). - project.json meta packages/transitive dependencies:.NET Core и project.json представляют концепцию мета-пакетов.
Microsoft.NETCore.App
по существу является базовой зависимостью для приложения командной строки .NET Core иNETStandard.Library
для библиотек классов. Все эти пакеты могут иметь собственный код и транзитные зависимости для других пакетов. Этим вы также можете воспользоваться. В качестве примера пакетMicrosoft.NETCore.App
относится кNETStandard.Library
, который снова ссылается наSystem.Collections.Generic
. Поэтому в вашем приложении, которое ссылается наMicrosoft.NETCore.App
, вы можете использовать общие коллекции. Для ASP.NET Core ситуация отличается, потому что философия pay-as-you-go очень критична для производительности. Для продуктивного применения вы должны понимать, что вы добавляете. В качестве стартера вы должны использовать системы лесов, например, VS или yoman.Microsoft.AspNetCore.Server.Kestrel
(например, обычный текст) илиMicrosoft.AspNetCore.Mvc
(для веб-api) транзитивно включают большинство других критических зависимостей ядра ASP.NET.
Отказ от ответственности. Большинство вышеперечисленных тем связаны с инструментами, которые считаются "предварительными". "Предварительный просмотр" означает "бета". Наступают значительные изменения (например, переключение системы сборки из project.json обратно в msbuild или усовершенствование стандарта .NET еще раз).
Надеюсь, это ответит на большинство ваших вопросов. Я думаю, что ответить на все из них в одном вопросе - это вызов;).