#c# #sourcegenerators #csharp-source-generator
Вопрос:
Я сам, а также мои коллеги начали сталкиваться с этой проблемой где-то в последние несколько недель:
Сборка НЕ УДАЛАСЬ
CSC : предупреждение CS8032: Экземпляр анализатора My.Company.Генераторы.ReportingV2Генератор не может быть создан из /Пользователи/работа/dev/git/модель отчетности/src/Моя.Компания.Генераторы/bin/Отладка/netstandard2.1/Моя компания.Generators.dll : Не удалось загрузить файл или сборку » Microsoft.Анализ кода, Версия=3.10.0.0, Культура=нейтральная, PublicKeyToken=31bf3856ad364e35′. Система не может найти указанный файл.. [/Пользователи/работа/разработка/git/модель отчетности/src/Моя.Команда.Модели.ReportingV2/Моя.Команда.Модели.ReportingV2.csproj]
/Users/work/dev/git/reporting-model/src/My.Company.Api/SmokeTests/Tests/ContentAskExpertSmokeTest.cs(7,20): ошибка CS0234: Тип или имя пространства имен «Модели» не существует в пространстве имен » Мой.Команда» (у вас отсутствует ссылка на сборку?) [/Пользователи/работа/разработка/git/модель отчетности/src/My.Company.Api/My.Company.Api.csproj]
… Еще много вышеперечисленных ошибок «типа или пространства имен»
…
Это происходит как в macOS, так и в Windows. Он работает в Linux (как на персональной машине, так и внутри mcr.microsoft.com/dotnet/sdk:5.0
.
Буквально ни один исходный код генератора / csproj не изменился, он начался спонтанно около двух недель назад. Я также могу воспроизвести это в фиксации двухмесячной давности, так что, похоже, что-то могло измениться внешне в пакетах?
Комментарии:
1. «Не удалось загрузить файл или сборку» Microsoft. Кодовый анализ»… Система не может найти указанный файл. »
2. Да, но это так, на 100%. Как я уже сказал, я проверил старую фиксацию двухмесячной давности, и возникла та же проблема.
3. Это
dotnet restore
тоже работает, и я вижу эту зависимость4. Что-то обновило пакет NuGet для анализа кэшированного кода до другой версии?
5. Кажется маловероятным, учитывая, что это происходит на 5 разных машинах (Mac и Windows), но никогда не на Linux, и все они извлекаются из одной и той же искусственной jfrog
Ответ №1:
Я нашел решение для этого, обратившись непосредственно в Microsoft.
Ошибка в случае сбоя заключается в том, что генератор зависит от Microsoft.Кодовый анализ.dll версии 3.10 и 3.10 поставляются только в версии 5.0.300. Похоже, что в вашем случае успеха используется SDK 5.0.300, но в случае сбоя используется 5.0.204.
У вас есть два варианта исправить это:
Если вы не используете какие-либо функции, представленные в 3.10 для генераторов исходных текстов, вы можете снизить цену.Пакет CodeAnalysis nuget нацелен на 3.9. Убедитесь, что все сборки используют по крайней мере версию SDK 5.0.300