У меня есть проект с минимальной версией Windows 10, версия 1809 (10.0; сборка 17763), и я получаю тысячи предупреждений:
This call site is reachable on all platforms. 'ValueSet.this[string]' is only supported on: 'Windows' 10.0.10240.0 and later.
Я прочитал документацию, там предлагается использовать:
[UnsupportedOSPlatform("windows")]
[SupportedOSPlatform("windows10.0.17763")]
Я не могу использовать его, потому что:
CS0246: The type or namespace name 'UnsupportedOSPlatformAttribute' could not be found (are you missing a directive or an assembly reference?)
CS0246: The type or namespace name 'UnsupportedOSPlatform' could not be found (are you missing a directive or an assembly reference?)
Как это исправить и почему я получаю предупреждающее сообщение, если версия выше 10.0.10240.0?
Да. Когда я выбираю System.Runtime.Versioning.SupportedOSPlatform
, появляется предупреждение: «Указывает, что API поддерживается для указанной платформы или операционной системы. Если указана версия, API не может быть вызван из более ранней версии. Можно применить несколько атрибутов для указания поддержки в нескольких операционных системах». системы Проект 1 – Нет в наличии Проект 2 – Не доступен Проект 3 – В наличии».
Я понял, поскольку у меня есть несколько проектов с разными фреймворками, и я использую между ними файлы cs, я не могу использовать их напрямую [SupportedOSPlatform("windows10.0.17763")]
.
Я должен указать, для какого правила структуры:
#if NET
[System.Runtime.Versioning.SupportedOSPlatform("windows10.0.17763")]
#endif
«Я понял, потому что у меня есть несколько проектов с разными платформами, и я использую между ними общие файлы cs» — каждый раз, когда вы задаете вопрос, если вы находитесь в таком необычном контексте (совместное использование файлов .cs между проектами), это действительно важно, чтобы вы предоставили весь соответствующий контекст. Никто, кроме вас, не мог дать такой ответ, потому что вы не предоставили достаточно информации в вопросе. (В идеале для начала предоставьте минимальный воспроизводимый пример — придумав его, вы, вероятно, в первую очередь решили бы проблему.)
@JonSkeet Да, но это было совсем не очевидно, потому что проект был выбран UWP и уведомление все равно отображалось, соответственно это меня ввело в заблуждение
И именно здесь вы могли бы потратить время на попытку воспроизвести это на минимальном примере.
Есть ли у вас директива использования для этих атрибутов?
using System.Runtime.Versioning;
Я верю...