У меня есть три проекта, которые я строю
- FooBar.Abstractions
- FooBar.AspNetCore
- FooBar.AspNetCore.IntegrationTesting
Проекты FooBar.AspNetCore
и FooBar.AspNetCore.IntegrationTesting
имеют ссылки на FooBar.Abstractions
. Я хочу упаковать и отправить все три из них как отдельные пакеты NuGet.
Я начал с NuGet.config
файла, который выглядит локально так:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="aspnetcore_abstractions" value="./src/FooBar.Abstractions/bin/Debug/" />
</packageSources>
</configuration>
Затем я добавляю пакет в мои проекты
<ItemGroup>
<PackageReference Include="FooBar.Abstractions" Version="2.0.0-preview1" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
</ItemGroup>
Это действительно отстой, хотя каждый раз, когда я делаю изменения в проекте FooBar.Abstractions
, я должен зайти в папку C: \. Nuget \ packages и удалить кэш, прежде чем мой проект FooBar.AspNetCore
сможет восстановить только что скомпилированную версию. из моего решения.
Если я просто добавлю FooBar.Abstractions
в качестве ссылки на проект, а затем отправлю два пакета на NuGet.org, как это повлияет на пользователей, которые устанавливают эти два пакета в разные проекты в своих решениях. NuGet и .Net понимают все это, зная, что это одна и та же сборка? Я предполагаю, что в этом случае проект FooBar.AspNetCore
будет поставляться с FooBar.Abstractions.dll
, если я добавлю его в качестве ссылки на проект.
Я не знаю, вызывает ли это конфликты, зная, что пакет поставляет этот .dll, тогда клиент явно устанавливает пакет Abstractions, содержащий ту же самую DLL.
Как вы справляетесь с этим с помощью упаковки NuGet с новейшими версиями NuGet? Как заставить FooBar.AspNetCore
использовать одну и ту же версию FooBar.Abstractions.dll
между ссылкой на пакет и пакетом NuGet, который будут установлены другими? Я не могу принудительно установить PackageReference Include="FooBar.Abstractions" Version="2.2"
, если вместо этого добавляю его в качестве ссылки на проект?