Пытаюсь в стандартном проекте Windows Forms сделать проверку прав пользователя:
using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
{
WindowsPrincipal principal = new(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
Но компилятор выдаёт ошибку:
Как сказано в сообщении об ошибке, функционал ‘target-typed object creation’ нам доступен в C#, начиная с версии 9. Если посмотреть таблицу версий C#, станет понятно, что эта версия входит в .NET 5.
Таким образом, я попробовал включить поддержку языка C# версии 9+ в настройках сборки проекта:
▶ ▶ ▶ :
= …
И вот тут мне пришлось искать решение, т.к. для моего проекта максимальная версия была 4.8.1
Эти шаги мне не помогли
1. В дереве проектов выбрать проект.
2. В меню перейти в и выбрать .
3. Опять в меню выбираем ▶ ▶
4. В папке нашего проекта находим файл с расширением .csproj и открываем его.
5. На текущий момент актуальная версия 8.0 (8.0.3), поэтому вписываем её.
<TargetFrameworkVersion>v8.0.3</TargetFrameworkVersion>
6. Сохраняем изменения и закрываем файл.
7. В дереве проекта выбираем проект и нажимаем .
8. Появится сообщение, где мы выбираем загрузку нужной версии:
Здесь скачается версия 8.0.203
Даже если мы установим этот пакет, всё равно будет появляться окошко с предложением скачать SDK с сайта.
Решение
Решение нашёл в MSDN.
1. Открываем проект в Visual Studio.
2. Переходим в Дополнения:
▶ ▶
3. Находим и устанавливаем .NET Upgrade Assitant
4. Перезапускаем Visual Studio
5. Ждём, когда установится дополнение
6. Открываем наш проект
7. В дереве проектов на нашем проекте нажимаем правую кнопку мыши и выбираем .
8. В этом окошке выбираем
9. Подтверждаем все запросы на апгрейд.