Создание и установка пакета 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"/>

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

Другие вопросы по тегам