У нас есть инструмент статического анализа на основе Roslyn.Чтобы построить проект C #, используя файл .sln
или .csproj
, мы используем MSBuildWorkspace
.В этом сценарии все работает хорошо.
Недавно я наткнулся на проект веб-сайта старого типа , который не содержит .csproj
- страницы компилируются сервером по требованию (если только предварительно скомпилировано ).Неудивительно, что MSBuildWorkspace
не поддерживает такие «безпроектные» проекты, что подтверждается пунктом 2 в этом ответе .
Теперь сложность состоит в том, чтобы снабдить сборкунеобходимые зависимости / сборки.Чтобы справиться с таким случаем использования, наш инструмент статического анализа предлагает флаг типа -I path/to/dll
, чтобы пользователи могли указывать каталоги, где искать эти библиотеки DLL, и я создаю для них MetadataRereferences
.Хотя этот подход работает, он не обеспечивает наилучшего пользовательского опыта, поскольку пользователь не всегда является разработчиком и может не знать все местоположения / детали.
Я хотел бы спросить, кто-либоизвестно об альтернативном подходе к созданию проектов без веб-сайтов, где мы могли бы «проинструктировать» / настроить Roslyn, чтобы имитировать процесс, выполняемый настоящим веб-сервером для компиляции aspx.cs
файлов?
Спасибо!