Куда Visual Studio ссылается на фактическую библиотеку DLL, на которую ссылается nuget? - PullRequest
0 голосов
/ 12 июня 2018

Я добавил библиотеку Autofac, используя nuget, и я вижу ее в своих ссылках, как показано ниже.

enter image description here

Но когда я проверяюсвойства [F4] Autofac, нажав на него, он показывает пустое поле свойств в Visual Studio.

enter image description here

Кроме того, я не вижу папку Autofac в папке packages.

enter image description here

Я вижу только ссылку на пакет в файле .csproj.Тогда как он находит DLL?где актуальная длл?Я вижу, что это автоматически входит внутрь БИН .Как это происходит?

enter image description here

Основная проблема: локально я могу построить решение, но на сервере сборки TFS не получается то же решение.Невозможно найти ссылку на Nuget.Так, где я могу найти ссылки на dll?или как его подтолкнуть в TFS?

Ответы [ 4 ]

0 голосов
/ 13 июня 2018

Предполагается, что вы используете TFS 2015, имя задачи NuGet Restore должно быть NuGet Installer, которое при добавлении задач будет равно Package.

Итак, если вы установили Nuget на машине для сборки, то выможете использовать задачу напрямую.Вы также можете настроить nuget.exe для сборки TFS 2015 - просто укажите Path to NuGet.exe

. Вы можете обратиться к Блогу Мумии - Custom nuget.exe для сборки TFS 2015 для получения подробной информации.

enter image description here

0 голосов
/ 12 июня 2018

Вы используете новую Ссылку на пакет , где файлы NuGet получают , хранящиеся в кэше :

Папки локальных пакетов решения больше не используются- Пакеты теперь разрешаются в кеше пользователя в %userdata%\.nuget, а не в папке пакетов для конкретного решения.Благодаря этому PackageReference работает быстрее и занимает меньше места на диске благодаря использованию общей папки пакетов на вашей рабочей станции.

0 голосов
/ 12 июня 2018

Как уже объяснил @ magicandre1981, со ссылкой на пакет стиля * 1001 (в стиле package.config см. Также this для получения дополнительной информации о различиях, если вы не знали)пакеты находятся не в папке пакетов для решения, а в центральной (по умолчанию %USERPROFILE%\.nuget\packages).Хотя вы можете легко изменить местоположение, используя переменную среды NUGET_PACKAGES (которая также работает как переменная TFS Build , поскольку они предоставляются как переменные среды для этапов сборки).

Кроме того,внутри Visual Studio вы не видите пути, потому что фактический путь к DLL определяется во время сборки.Вы можете увидеть часть этого пути в файле <project-dir>\obj\project.assets.json (который генерируется во время restore target / operation), но полный путь вы увидите только в журналах MSBuild (например, при фактическом вызове исполняемого файла csc.exe)./ C # или во время ResolveAssembyReferences -задачи).

Обратите внимание, что для .NET Core, то есть проектов в стиле "SDK", путь фактически отображается в свойствах (как и фактические библиотеки DLL в узле подузел "package".

PackageReference in SDK-style projects

Можно только предположить, что интеграция PackageReference в "старых" проектах еще не завершена полностью (если вообще когда-либо).

Для сравнения PackageReference в "старом" / не SDK-стиле проекта:

PackageReference in non-SDK-style/old project

0 голосов
/ 12 июня 2018

Добавьте задачу NuGet Restore в свою сборку, чтобы восстановить пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...