ссылка на nuget из другого решения

У меня есть 2 решения:

  • Solution1
    • Project1.1: references nuget package NU1
  • Solution2
    • Project2.1: references Solution1 / Project1.1

Когда я создаю Solution2, он терпит неудачу, потому что nuget тянет пакет NU1 к пакетам Solution2, а когда Project1.1 создается как зависимость, пакет NU1 отсутствует.

Предыдущие вопросы и ответы убедили меня ссылаться на проекты лучше, чем на .dll, однако, боюсь, я еще не понял, как следовать этому руководству при работе с nuget.

Заранее благодарим за комментарии!


person Reinhard Mayr    schedule 21.12.2015    source источник


Ответы (3)


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

Для этого может потребоваться частный канал nuget.

Почему именно так?

  1. решения не имеют ничего общего - следующий разработчик не поймет эту скрытую ссылку
  2. если вы используете их только вместе, возможно, они должны быть в растворе
person Piotr Stapp    schedule 21.12.2015
comment
Я согласен с Петром Стаппом. NuGet - это система управления пакетами (с открытым исходным кодом) для .NET, и, честно говоря, ее цель - упростить процесс включения других dll, особенно сторонних dll, в ваши решения. - person microtechie; 21.12.2015

В итоге мне удалось вот так:

  • создал каталог packages параллельно каталогам решений
  • каждое решение получает файл nuget.config с

=> все решения используют одни и те же пакеты :)

person Reinhard Mayr    schedule 09.02.2016

Проблема в том, что Solution1 решает ссылки, заглянув в папку Solution1\package, и этого не произойдет при сборке Solution2

Откройте ваш csproj файл, чтобы найти

<ItemGroup>
    <Reference>      
       <HintPath>..\..\packages\SomeReference\lib\net45\Reference.dll</HintPath>    

замените относительное местоположение ..\..\ на $(SolutionDir) как

<HintPath>$(SolutionDir)\packages\SomeReference\lib\net45\Reference.dll</HintPath>   

Поскольку $(SolutionDir) - это путь к папке решения, он решит все проблемы со ссылками на будущее.

person Vinod Srivastav    schedule 21.08.2019