<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>
Это приведет к тому, что пакет будет создаваться заново при каждой компиляции проекта. По умолчанию пакет создается в подкаталоге
binDebug
или
binRelease
в зависимости от выбранной конфигурации.
Пакеты также можно создавать в командной строке, причем интерфейс CLI предлагает больше параметров, чем среда Visual Studio. Например, чтобы построить пакет и поместить его в каталог по имени
Publish
, введите показанные далее команды (находясь в каталоге проекта
CarLibrary
). Первая команда компилирует сборку, а вторая создает пакет NuGet.
dotnet build -c Release
dotnet pack -o .Publish -c Debug
На заметку!
Debug
является стандартной конфигурацией и потому указывать
-с Debug
необязательно, но параметр присутствует в команде, чтобы намерение стало совершенно ясным.
Теперь в каталоге
Publish
находится файл
CarLibrary.1.0.0.3.nupkg
. Для просмотра его содержимого откройте файл с помощью любой утилиты zip-архивации (такой как 7-Zip). Вы увидите полное содержимое, которое включает сборку и дополнительные метаданные.
Ссылка на пакеты NuGet
Вас может интересовать, откуда поступают пакеты, добавленные в предшествующих примерах. Местоположением пакетов NuGet управляет файл XML по имени
NuGet.Config
. В среде Windows он находится в каталоге
%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 SDKsNuGetPackages" />
</packageSources>
</configuration>
Здесь присутствуют два источника пакетов. Первый источник указывает на
http://nuget.org/
— крупнейшее в мире хранилище пакетов NuGet. Второй источник находится на вашем локальном диске и применяется средой Visual Studio в качестве кеша пакетов.
Важно отметить, что файлы
NuGet.Config
по умолчанию являются
аддитивными. Чтобы добавить дополнительные источники, не изменяя список источников для всей системы, вы можете создавать дополнительные файлы
NuGet.Config
. Каждый файл действителен для каталога, в котором он находится, а также для любых имеющихся подкаталогов. Добавьте в каталог решения новый файл по имени
NuGet.Config
со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local-packages" value=".CarLibraryPublish" />
</packageSources>
</configuration>
Кроме того, вы можете очищать список источников пакетов, добавляя в узел
<packageSources>
элемент
<clear />
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<b> <clear /</b>>
<add key="local-packages" value=".CarLibraryPublish" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
На заметку! В случае работы в Visual Studio вам придется перезапустить IDE-среду, чтобы обновленные настройки
NuGet.Config
вступили в силу.
Удалите ссылки на проекты из проектов
CSharpCarClient
и
VisualBasicCarClient
, после чего добавьте ссылки на пакет (находясь в каталоге решения):
dotnet add CSharpCarClient package CarLibrary
dotnet add VisualBasicCarClient package CarLibrary
Установив ссылки, скомпилируйте решение и просмотрите целевой каталог (
binDebugnew5.0
). Вы увидите, что в целевом каталоге находится файл
CarLibrary.dll
, а файл
CarLibrary.nupkg
отсутствует. Причина в том, что исполняющая среда .NET Core распаковывает файл
CarLibrary.nupkg
и добавляет содержащиеся в нем сборки как прямые ссылки.