.NET 8 – C#12 – предварительная версия перехватчиков
Я хотел бы попробовать новую функцию предварительного просмотра C# 12 Interceptors , но, похоже, не могу заставить ее работать.
На странице написано
Функция предварительной версии, представленная в Visual Studio 17.7, предварительная версия 3.
Поэтому я попробовал использовать Jetbrains Rider. Потому что я видел видео Ника Чапсаса на YouTube.
Мой файл проекта выглядит так:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>preview</LangVersion>
<Features>InterceptorsPreview</Features>
</PropertyGroup>
</Project>
Я использовал пример кода с этой страницы
Я еще раз посмотрел видео на Youtube и увидел, чтоInterceptsLocationAttribute
был в одном из его вспомогательных файлов, поэтому я попытался добавить код этого атрибута в свой проект кода.
Код компиляции шины все еще не работает. Выполнение кода не перешло к коду перехвата.
2 ответа
Обновление: теперь, когда выпущена предварительная версия Visual Studio 17.7 3, она работает так, как задумано в предварительной версии Visual Studio.
У меня все заработало, изменения уже есть в основной ветке https://github.com/dotnet/roslyn , поэтому, создав это локально, я могу запустить новую версию Visual Studio и запустить в ней код. Это заставляет это работать, поэтому я думаю, что Ник сделал то же самое.
Да, атрибут [InterceptsLocation] не был распознан компилятором C#12, поскольку в настоящее время он отсутствует в System.Runtime.CompilerServices.
Хотя он предлагается для C#12, но на данный момент почему-то недоступен в System.Runtime.CompilerServices. Нам нужно добавить его в пространство имен System.Runtime.CompilerServices, и тогда он будет работать как положено.
Наткнулся на один канал Youtube «Learn N Joy», где это обсуждалось и объяснялось. Вот ссылка: