Re[3]: C# как скрипт. Компиляция с nuget рефами
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 05.05.24 13:46
Оценка:
Здравствуйте, 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, который на первый взгляд выглядит вполне живым и достаточно простым в использовании.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.