2015-11-19 7 views

ответ

1

Возможно ли использовать новый файл project.json для добавления пакетов NuGet в стандартную библиотеку классов .NET 4.6?

Я не уверен, что означает «стандарт», но если вы работаете в полной версии .NET, то нет.

Ответственность за загрузку зависит от времени выполнения. Во время выполнения CoreCLR используется coreclr.dll, а не полная платформа .NET, которая использует clr.dll.

При использовании CoreCLR используется LoaderContainer, который знает о файле project.json и, таким образом, ищет там какие зависимости загружать. Зависимости процесса от загрузки описаны в DNX Structure внутри документации ASP.NET 5.

Если вы действительно хотите получить подробную информацию о том, как это делается, вы можете посмотреть DefaultHost.cs и ApplicationHostContext.cs в решении aspnet/dnx на GitHub.

Layer 1: CLR Native Ведущий:

Этот слой специфичен для версии CLR, которые вы используете, и имеет две основные функции:

  1. загрузке с CLR, как это достигается, зависит от версии CLR. Для ядра CLR процесс включает загрузку coreclr.dll, настройку и запуск выполнения, и создание AppDomain, что все управляемый код будет работать в.

  2. Вызов Managed точки входа, Layer 2. Когда точка входа из Native Host возвращает этот процесс, затем очистку и завершение работы CLR . i.e выгрузите домен приложения и остановите время выполнения.

Layer 2: Управляемые точки входа

Этот слой является первым слоем, который записывается в управляемом коде, это ответственность за:

  • Создание LoaderContainer, который будет содержат требуемые ILoaders. ILoader отвечает за загрузку сборки по имени. Когда CLR запрашивает, что сборка будет разрешена, LoaderContainer будет решить требуемую сборку, используя свои ILoaders.

  • Предоставьте корень ILoader, который будет загружать сборки и удовлетворять зависимостям , из предоставленного --lib, предоставленного при запуске собственного . Обычно это пакет DNX.

  • Назовите основную точку входа предоставленной программы.

Layer 3: хост-приложений/Application

Если пользователь компилирует все их применение к сборкам на диске в в LIBPATH этого слой ваше приложение. Для этого вы передаете имя сборки, содержащей точку входа в приложение, в аргумент [имя_программы], а слой 2 будет ссылаться на него напрямую. Тем не менее, во всех других сценариях вы использовали бы хост приложения для для разрешения зависимостей приложений и запуска вашего приложения. Microsoft.Net.ApplicationHost является принимающим приложением, обеспечиваемый в выполнении, и имеет несколько функций:

  • ПРОГУЛКИ зависимостей в project.json и создает закрытие зависимостей приложения будет использовать , Движущаяся зависимость логика более подробно описано в разрешении зависимостей документации

  • Добавляет ILoader к LoaderContainer, которые могут загружать сборки из различных источников, NuGet, Рослин и т.д.

  • Вызывает запись точка сборки, имя которого задано в качестве следующего аргумента нативного процесса

 Смежные вопросы

  • Нет связанных вопросов^_^