Создание пакета NuGet

Завершено

После упаковки нашей библиотеки классов Razor вы получите двоичный файл, на который могут ссылаться проекты Blazor, а содержащиеся в нем компоненты могут использоваться в этих проектах.

В предыдущем модуле вы создали библиотеку классов Razor, содержащую модальный компонент, который предоставляет модальное диалоговое окно для приложений Blazor. Чтобы поделиться этим компонентом для использования в других приложениях, нам нужно упаковать и поместить его в репозиторий или папку, где его смогут получить другие разработчики.

В этом уроке вы обновите этот проект и создадите пакет NuGet. Наконец, вы развернете этот пакет NuGet в приложении сервера Blazor.

Добавление свойств пакета в FirstClassLibrary

Сначала мы обновим проект FirstClassLibrary, добавив в него свойства, которые позволят упаковать его для развертывания в виде пакета NuGet.

  1. Откройте файл проекта для проекта MyClassLibrary, дважды щелкнув проект в Обозревателе решений Visual Studio или открыв MyClassLibrary.csproj в Visual Studio Code.

  2. В разделе в верхней части файла с тегом <PropertyGroup> добавьте следующее содержимое перед закрывающим тегом </PropertyGroup>:

        <PackageId>My.FirstClassLibrary</PackageId>
        <Version>0.1.0</Version>
        <Authors>YOUR NAME</Authors>
        <Company>YOUR COMPANY NAME</Company>
        <Description>This is a Razor component library with a cool modal window component.</Description>
      </PropertyGroup>
    

    Этот код определяет библиотеку классов Razor как <PackageId> "My.FirstClassLibrary" и <Version> 0.1.0. Введите в этих двух полях собственное имя и имя компании.

Упаковка библиотеки для повторного использования

Затем вы выполните команду .NET в командной строке, чтобы упаковать библиотеку классов Razor, чтобы другие приложения за пределами нашего решения могли ссылаться на нее.

Вы можете выполнить эти же шаги в ходе непрерывной интеграции, чтобы упаковать библиотеку и развернуть ее на NuGet.org, в репозитории GitHub или в другом расположении для совместного использования вашей организацией.

В той же папке, в которой находится файл MyClassLibrary.csproj, выполните следующую команду:

dotnet pack

Эта команда записывает файл с именем My.FirstClassLibrary.0.1.0.nupkg в папку bin/Debug.

Добавление ссылки на пакет NuGet в приложении MyBlazorServer

Вы уже ссылались на проект FirstClassLibrary в приложении MyBlazorServer, так как он был в той же структуре папок, что и веб-приложение.

Теперь отменим ссылку на проект и добавим ссылку на созданный нами пакет NuGet.

Эти действия НЕ являются типичной конфигурацией. Проекты библиотеки, расположенные в тех же папках или решении, что и приложения, которые должны ссылаться на них, могут напрямую ссылаться на проект, как мы видели в предыдущем упражнении.

  1. Откройте файл MyBlazorServer.csproj, дважды щелкнув имя проекта MyBlazorServer в Visual Studio или открыв файл в Visual Studio Code.

  2. В файле MyBlazorServer.csproj удалите следующую строку:

    <ProjectReference Include="..\FirstClassLibrary\FirstClassLibrary.csproj" />

  3. В той же папке, что и MyBlazorServer.csproj, выполните следующую команду:

    dotnet add package My.FirstClassLibrary -s ..\FirstClassLibrary\bin\Debug
    

    Эта команда захватывает созданный ранее пакет NuGet, устанавливает копию в локальном кэше пакетов NuGet, а затем добавляет ссылку на этот пакет в файле MyBlazorServer.csproj .

Проверьте свою работу

Правильно ли установился новый пакет? Можно ли запустить приложение FirstServer и увидеть модальное окно при запуске приложения?

Давайте узнаем.

  1. Запустите приложение MyBlazorServer в Visual Studio, выбрав F5 или в папке MyBlazorServer, выполнив следующую команду:

    dotnet run

  2. В браузере перейдите на домашнюю страницу приложения MyBlazorServer: https://localhost:5000

    Отображается Мое первое модальное диалоговое окно? Если видите, — поздравляем! Вы успешно выполнили упаковку и развертывание проекта FirstClassLibrary. Приложения теперь могут использовать ваш компонент модального окна отовсюду, ссылаясь на ваш новый пакет NuGet.