Шрифт:
Интервал:
Закладка:
<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)
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})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 и добавляет содержащиеся в нем сборки как прямые ссылки.
- Понимание SQL - Мартин Грубер - Базы данных