Здравствуйте, Sаныч, Вы писали:
S>Имелся ввиду подход с использованием CSharpCompilation. В этом случае добавление ссылок происходит через передачу путей к файлам. Конечно же, ссылки сохраняются не в коде напрямую, а в отдельном файле.
Понял.
Увы, ничего готового посоветовать не могу.
Судя по
вот такому комментарию разработчики Roslyn считают что резолвинг зависимостей из NuGet — это не задача компилятора, а задача системы сборки.
Я попробовал поискать что-то готовое, но увы...
Нашел даже аналогичный вашему вопрос на stackoverflow, но
там предлагается очень урезанный вариант — по сути просто явное скачивание NuGet пакета и извлечение из него нужной сборки. Т.е. не задействуется локальный кэш, не резолвится весь граф зависимостей, ...
А если делать по хорошему, то решение получается не особо простым.
Вообще по API NuGet буквально пару публикаций:
—
https://martinbjorkstrom.com/posts/2018-09-19-revisiting-nuget-client-libraries
— и циклы из 3 статей, на которые ссылаются из самой документации (а в документации вообще минимум примеров)
https://learn.microsoft.com/en-us/nuget/reference/nuget-client-sdk#third-party-documentation
Может быть вам рассмотреть вариант с генерацией MsBuild проекта на лету и получения результатов через него? Это потребует, как минимум, наличия SDK на конечной машине (на сколько помню в Runtime пакет MSBuild не входит), но может дополнительные условия не такие уж и страшные?
Например, есть вот такой проект
MSBuildProjectCreator, который на первый взгляд выглядит вполне живым и достаточно простым в использовании.