Использование Roslyn (Microsoft.CodeAnalysis) для запроса информации о проектах веб-сайтов

#c# #static-analysis #roslyn

#c# #статический анализ #roslyn

Вопрос:

Я пытаюсь реализовать инструмент для статического анализа кода с использованием Roslyn. Проблема, которую я нахожу, заключается в том, что когда я загружаю решение, проекты веб-сайтов не загружаются в коллекцию проектов решения.

Я попытался преобразовать эти проекты веб-сайтов в проекты веб-приложений, затем Roslyn смог загрузить проект, но когда я просматриваю коллекцию документов проекта, документов (.cs-файлов) в папке App_Code там нет.

Идеальным сценарием для моего случая было бы иметь возможность выполнять статический анализ кода в файлах веб-сайта (включая файлы app_code) без необходимости его преобразования.

Кто-нибудь знает, почему Roslyn не смог загрузить проекты веб-сайтов или документы App_Code в случае веб-приложения? Есть предложения?

Комментарии:

1. «Проекты» веб-сайта не являются проектами. Кажется, вы нашли еще одну причину никогда не использовать «проекты» веб-сайтов, а вместо этого использовать проекты веб-приложений.

2. Джон, я предполагал, что это может быть причиной, но, поискав в Интернете, я не нашел ничего, что могло бы это подтвердить.

3. Если вы ничего не смогли найти, это, вероятно, потому, что «проекты» веб-сайтов странные, и большинство людей, которые знают разницу, ими не пользуются.

Ответ №1:

Файлы внутри папки App_Code не распознались Roslyn, потому что для действия сборки было установлено значение «Содержимое» вместо «Компиляция». Изменено действие сборки, и документы были загружены.

О веб-сайтах, которые не загружаются, похоже, что Roslyn нужен файл csproj для понимания проекта. Веб-сайты, как указано в комментариях, не являются реальными проектами и не имеют этого.