У меня в контроллере есть следующий код, позволяющий в локальной среде не использовать токен для аутентификации, тогда как в производственной среде для аутентификации необходим токен JWT:
Часть «else» требует обязательного импорта, чтобы она работала. Однако он выделен серым цветом, поскольку Visual Studio определяет, что это импорт, который не используется (что верно в локальной среде, но при компиляции для другой среды это необходимо для работы).
Проблема в том, что иногда мы очищаем импорт и удаляем тот, который не используется. Когда этот импорт обнаруживается, что он не используется (хотя это действительно необходимо), процесс удаляет его. Это действие генерирует ошибки компиляции при компиляции для производственной среды.
Это ошибка Visual Studio? Есть ли способ избежать этого и заставить использовать этот импорт? Или другой способ переписать оператор if DEBUG, чтобы код мог обнаружить использование импорта?
Я считаю, что это задумано и это не ошибка.
В любом случае, я считаю, что вы также можете использовать if DEBUG в файле using. Я попробовал это локально, и очистка кода сообщества Visual Studio не очистила это следующим образом:
#if DEBUG
#else
using Microsoft.AspNetCore.Authentication.JwtBearer;
#endif
Однако использование полного пространства имен, как предлагает @StriplingWarrior, должно быть более чистым способом достижения того, чего вы хотите.
[Authorize(Policy = Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationSchema)]
Спасибо, оба решения решили мою проблему. Я предпочитаю второй, это более чистый способ, да
На самом деле ваш ответ лучше. Я просто удалю свой. Вы можете удалить ссылки на него.