Ссылки на NuGet могут работать (в большинстве случаев?), Но вы также можете столкнуться с проблемами управления версиями. Например, попробуйте добавить пакет клиентских библиотек Microsoft HTTP в проект .NET 4 и проверить полученный файл csproj
.
Во-первых, вы заметите, что некоторые сборки BCL были переопределены:
- System.IO.dll
- System.Runtime.dll
- System.Threading.Tasks
И теперь все ссылочные проекты должны использовать эти переопределения также (поскольку вы не можете ссылаться на несколько версий одной и той же сборки). Помимо прочего, это означает, что вы теряете обновления для этих сборок (если только не обновлен пакет BCL NuGet).
Вы также заметите, что ваш csproj содержит следующую запись (она не будет работать, если вы удалите ее):
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets')" />
Я не разбираюсь в MSBuild, но полагаю, это может повлиять на вашу среду сборки.