Возможно ли использовать новый файл project.json для добавления пакетов NuGet в стандартную библиотеку классов классов .NET 4.6? Если да, то как?Использование project.json в библиотеке классов csproj
ответ
Возможно ли использовать новый файл 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, которые вы используете, и имеет две основные функции:
загрузке с CLR, как это достигается, зависит от версии CLR. Для ядра CLR процесс включает загрузку coreclr.dll, настройку и запуск выполнения, и создание AppDomain, что все управляемый код будет работать в.
Вызов 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, Рослин и т.д.
Вызывает запись точка сборки, имя которого задано в качестве следующего аргумента нативного процесса