Управление зависимостями в приложениях .NET

В этой статье объясняется, как добавлять и удалять зависимости пакетов, проектов и сборок.

Добавление и удаление зависимостей пакета

Вы можете добавлять и удалять зависимости, изменяя файл проекта или с помощью команд .NET CLI .

Использование CLI

Чтобы добавить зависимость, выполните dotnet package команду для версии пакета SDK:

dotnet package add Microsoft.EntityFrameworkCore

Чтобы удалить зависимость, выполните dotnet package команду для версии пакета SDK:

dotnet package remove Microsoft.EntityFrameworkCore

Изменение файла проекта

Чтобы добавить зависимость, добавьте <PackageReference> элемент внутри <ItemGroup> элемента. Вы можете добавить что-то в существующую <ItemGroup> или создать новую.

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    ...
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.2" />
  </ItemGroup>

</Project>

Атрибут Include задает идентификатор пакета, добавляемого в проект. Атрибут Version указывает версию для получения. Версии указываются в соответствии с правилами версии NuGet.

Используйте условия для добавления зависимости, доступной только в определенном целевом объекте, как показано в следующем примере:

<PackageReference Include="PACKAGE_ID" Version="PACKAGE_VERSION" Condition="'$(TargetFramework)' == 'netcoreapp2.1'" />

Зависимость в предыдущем примере будет допустимой только в том случае, если сборка выполняется для данного целевого объекта. В этом условии $(TargetFramework) используется свойство MSBuild, которое устанавливается в проекте. Для большинства распространенных приложений .NET это не нужно делать.

Чтобы удалить зависимость, удалите его <PackageReference> элемент из файла проекта.

Дополнительные сведения об элементе PackageReference см. в справочнике по MSBuild для проектов пакета SDK .NET.

Добавление и удаление ссылок на проекты

Используйте межпроектную ссылку, если ваш проект зависит от другого проекта. Чтобы добавить и удалить ссылки на проекты, измените файл проекта или используйте CLI.

Использование CLI

Чтобы добавить ссылку dotnet reference на проект, выполните команду для версии пакета SDK.

dotnet reference add ../MyLibrary/MyLibrary.csproj

Чтобы удалить ссылку на проект, выполните следующую команду для версии пакета SDK:

dotnet reference remove ../MyLibrary/MyLibrary.csproj

Изменение файла проекта

Элемент <ProjectReference> файла проекта определяет путь к проекту, на который ссылается ссылка. Чтобы добавить ссылку на проект, добавьте <ProjectReference> элемент внутри <ItemGroup> элемента. Вы можете добавить что-то в существующую <ItemGroup> или создать новую.

<ItemGroup>
  <ProjectReference Include="../MyLibrary/MyLibrary.csproj" />
</ItemGroup>

Чтобы удалить ссылку на проект, удалите <ProjectReference> элемент из файла проекта.

Дополнительные сведения об элементе ProjectReference см. в разделе "Общие элементы проекта MSBuild".

Добавление и удаление ссылок на сборки

Вы можете добавлять и удалять ссылки на сборки с помощью файла проекта. Интерфейс командной строки .NET не предоставляет команды для добавления или удаления ссылок на сборки.

Чтобы ссылаться на .NET сборку, которая не является частью проекта или пакета, добавьте <Reference> элемент в файл проекта. Используйте элемент <HintPath>, чтобы указать относительный или абсолютный путь к сборке:

<ItemGroup>
  <Reference Include="MyAssembly">
    <HintPath>lib/MyAssembly.dll</HintPath>
  </Reference>
</ItemGroup>

Чтобы удалить ссылку на сборку, удалите его <Reference> элемент из файла проекта.

Дополнительные сведения об элементе Reference см. в разделе "Общие элементы проекта MSBuild".

Советы

  • Не включайте входные данные в операцию восстановления в файле .targets или .props пакета, на который ссылается ссылка. Эти входные данные могут включать PackageReference элементы, ExcludeAssets атрибуты, каналы NuGet или другую конфигурацию NuGet. Файлы .targets и PROPS из пакетов не используются до завершения восстановления NuGet. Все, что необходимо для восстановления, должно находиться в файле проекта или в файле .targets для самого проекта, а не в качестве зависимости пакета.

  • Если вы хотите использовать API ASP.NET в консольном приложении или библиотеке классов, добавьте элемент FrameworkReference в файл проекта:

    <FrameworkReference Include="Microsoft.AspNetCore.App" />

    Дополнительные сведения см. в разделе "Использование общей платформы ASP.NET Core".

См. также