Создание и установка пакета nuget со ссылочным проектом
Я хочу опубликовать dotnetcore2.1
пакет nuget с использованием dotnet pack
а также dotnet nuget push
.
Пакет - это проект в решении, имеющий ссылку на другой проект в этом решении.
Я не могу установить пакет, потому что он не может разрешить указанный проект.
Я пробовал это сделать, и он включает указанный пакет.dll
к .nupkg
файл, но установить его по-прежнему невозможно.
Я действительно не могу понять, каков "ожидаемый" способ сделать это. Я определенно не собираюсь публиковать упомянутый проект в ленте nuget.
Это серьезная оплошность со стороны Microsoft или я чего-то не понимаю?
1 ответ
У тебя есть проект A
который вы хотите упаковать, и этот проект ссылается на другой проект B
который не может использоваться или не предназначен для использования отдельно, но с точки зрения дизайна разумно хранить его отдельно для таких целей, как повторное использование. В итоге пакет для проектаA
также должен содержать проект B
.
Действительно, это проблема, отслеживаемая в репозитории NuGet, выпуск 3891. Как в этой, так и в вашей ссылке на соответствующую проблему проекта.NET есть обходной путь, связанный с MS Build, но официальной поддержки пока нет.
Как указано в вышеупомянутой проблеме, даже Microsoft, похоже, знает об этой проблеме и просто создает пакеты для упомянутых проектов, которые отмечены
Пожалуйста, не ссылайтесь напрямую
Я думаю, что до тех пор, пока не поддерживаются ссылки на проекты, безопаснее всего делать то же самое, хотя это и неудобно. Обходные пути могут устареть или вызвать странное поведение. Однако, поскольку ваш проект, на который имеется ссылка, предназначен только для использования в вашей основной библиотеке, вы можете включить его следующим образом
<PackageReference Include="LLL.Client" Version="1.0.0" PrivateAssets="all"/>
Таким образом, содержимое пакета из вашего проекта, на который имеется ссылка, будет включено только в ваш проект, и потребители вашего основного пакета не смогут их увидеть.