Она была создана и построена на базе MS VS 2022.
ФАЙЛ ПРОЕКТА:
Код: Выделить всё
net8.0-windows10.0.26100.0
disable
enable
Код: Выделить всё
public static RegistryKey? GetRegistryKey () =>
Registry
.CurrentUser
.OpenSubKey("Software")
?.OpenSubKey("ODBC")
?.OpenSubKey("ODBC.INI")
?.OpenSubKey("ODBC Data Sources");
public static IEnumerable GetDataSources1 ()
{
using var key = DataProviderOdbc.GetRegistryKey();
{
// Only the following line causes the warning (listed below).
return (key?.GetValueNames()?.ToList() ?? []);
}
}
public static string [] GetDataSources2 (RegistryKey? key)
=> key?.GetValueNames() ?? [];
public static IEnumerable GetDataSources3 (RegistryKey? key)
=> key?.GetValueNames()?.ToList() ?? [];
public static IEnumerable GetDataSources4 ()
=> DataProviderOdbc.GetRegistryKey()?.GetValueNames()?.ToList() ?? [];
Code: CsWinRT1030
Type 'System.Collections.Generic.List' implements generic WinRT interfaces which requires generated code using unsafe for trimming and AOT compatibility if passed across the WinRT ABI. Project needs to be updated with 'true'.
Библиотека полна как неявных, так и явных приведения типов между T[], IEnumerable, LIST и т. д. Почему только эта строка? Должно быть, я делаю что-то глупое. Что мне не хватает? Зачем мне/должен рассматривать возможность пометки сборки как разрешающую небезопасный код?
Побочный вопрос: имеет ли это вообще какое-либо отношение к реестру (я предполагаю, что нет)? Я мало что знаю о мосте WinRT и о том, почему он вообще здесь рассматривается. Мы также будем признательны за любое понимание значения этого предупреждения.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ss-the-win
Мобильная версия