Язык программирования C#9 и платформа .NET5
<Copyright>Copyright 2020</Copyright><Authors>Phil Japikse</Authors><Company>Apress</Company><Product>Pro C# 9.0</Product><PackageId>CarLibrary</PackageId><Description>This is an awesome library for cars.</Description><AssemblyVersion>1.0.0.1</AssemblyVersion><FileVersion>1.0.0.2</FileVersion><Version>1.0.0.3</Version><b> <GeneratePackageOnBuild>true</GeneratePackageOnBuild></b></PropertyGroup>Это приведет к тому, что пакет будет создаваться заново при каждой компиляции проекта. По умолчанию пакет создается в подкаталоге
илиbin\Debugв зависимости от выбранной конфигурации.bin\ReleaseПакеты также можно создавать в командной строке, причем интерфейс CLI предлагает больше параметров, чем среда Visual Studio. Например, чтобы построить пакет и поместить его в каталог по имени
, введите показанные далее команды (находясь в каталоге проектаPublish). Первая команда компилирует сборку, а вторая создает пакет NuGet.CarLibrarydotnet build -c Releasedotnet pack -o .\Publish -c DebugНа заметку!
является стандартной конфигурацией и потому указыватьDebugнеобязательно, но параметр присутствует в команде, чтобы намерение стало совершенно ясным.-с DebugТеперь в каталоге
находится файлPublish. Для просмотра его содержимого откройте файл с помощью любой утилиты zip-архивации (такой как 7-Zip). Вы увидите полное содержимое, которое включает сборку и дополнительные метаданные.CarLibrary.1.0.0.3.nupkgСсылка на пакеты NuGet
Вас может интересовать, откуда поступают пакеты, добавленные в предшествующих примерах. Местоположением пакетов NuGet управляет файл XML по имени
. В среде Windows он находится в каталогеNuGet.Config. Это главный файл. Открыв его, вы увидите несколько источников пакетов:%appdata%\NuGet<?xml version="1.0" encoding="utf-8"?><configuration><packageSources><add key="nuget.org" value="https://api.nuget.org/v3/index.json"protocolVersion="3" /><add key="Microsoft Visual Studio Offline Packages"value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" /></packageSources></configuration>Здесь присутствуют два источника пакетов. Первый источник указывает на
— крупнейшее в мире хранилище пакетов NuGet. Второй источник находится на вашем локальном диске и применяется средой Visual Studio в качестве кеша пакетов.http://nuget.org/Важно отметить, что файлы
по умолчанию являются аддитивными. Чтобы добавить дополнительные источники, не изменяя список источников для всей системы, вы можете создавать дополнительные файлыNuGet.Config. Каждый файл действителен для каталога, в котором он находится, а также для любых имеющихся подкаталогов. Добавьте в каталог решения новый файл по имениNuGet.Configсо следующим содержимым:NuGet.Config<?xml version="1.0" encoding="utf-8"?><configuration><packageSources><add key="local-packages" value=".\CarLibrary\Publish" /></packageSources></configuration>Кроме того, вы можете очищать список источников пакетов, добавляя в узел
элемент<packageSources>:<clear /><?xml version="1.0" encoding="utf-8"?><configuration><packageSources><b> <clear /</b>><add key="local-packages" value=".\CarLibrary\Publish" /><add key="NuGet" value="https://api.nuget.org/v3/index.json" /></packageSources></configuration>На заметку! В случае работы в Visual Studio вам придется перезапустить IDE-среду, чтобы обновленные настройки
вступили в силу.NuGet.ConfigУдалите ссылки на проекты из проектов
иCSharpCarClient, после чего добавьте ссылки на пакет (находясь в каталоге решения):VisualBasicCarClientdotnet add CSharpCarClient package CarLibrarydotnet add VisualBasicCarClient package CarLibraryУстановив ссылки, скомпилируйте решение и просмотрите целевой каталог (
). Вы увидите, что в целевом каталоге находится файлbin\Debug\new5.0, а файлCarLibrary.dllотсутствует. Причина в том, что исполняющая среда .NET Core распаковывает файлCarLibrary.nupkgи добавляет содержащиеся в нем сборки как прямые ссылки.CarLibrary.nupkg