Как программно найти DLL, восстановленную Nuget? - PullRequest
0 голосов
/ 03 марта 2019

После того, как пользователь введет dotnet add package <SomePackage>, DLL будет установлена ​​по пути, аналогичному:

C:\Users\USER\.nuget\packages\SomePackage\1.0.2\lib\netstandard2.0\SomePackage.dll

Как я могу найти этот путь программным путем?Я вижу, что в obj/project.assets.json есть некоторая информация, которую я могу проанализировать, а также интересный класс DependencyContextJsonReader в организации dotnet github.

Однако я не могу найти никакой документации или обсуждений по этому поводу, и я не уверен, что это потому, что я придерживаюсь неправильного подхода.

Некоторые сведения: я пишуинструмент, который может создавать проекты на C #.Он использует комбинацию инструментов командной строки dotnet и API Roslyn Workspace для взаимодействия с сгенерированным проектом.Теперь я хотел бы позволить пользователю устанавливать пакеты Nuget в это сгенерированное решение.Я вызываю dotnet add package SomePackage, который работает нормально, и теперь я хотел бы добавить DLL к объекту Roslyn Project, используя AddReferences API, который требует фактической DLL.

1 Ответ

0 голосов
/ 03 августа 2019

Я нашел способ сделать это, используя клиентские библиотеки nuget.

По сути, вместо того, чтобы использовать команду dotnet add package, я могу использовать клиентские библиотеки NuGet непосредственно из моего приложения для установки пакетов.Затем у меня есть доступ к полному пути через метод PackagePathResolver.GetInstalledPath.

Пост Мартина Бьёркстрёма, Пересмотр библиотек NuGet v3 , содержит гораздо более подробную информацию и полностью рабочий пример кода изМартин доступен в этом списке .

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