Мне нужно вызвать некоторые системные API, которые поддерживаются только с Windows Vista или Windows 2008 Server. Итак, я использую DllImport и вызывая эти методы. Однако мое приложение WPF также должно поддерживать более старые платформы (хотя и очень мало клиентов). Итак, мой план состоит в том, чтобы сначала обнаружить операционную систему, а затем отобразить другой экран вместо вызова этих неподдерживаемых API. Но я хочу знать ожидаемое поведениеЧто произойдет, если у меня есть DllImport (C# .NET) для API, не поддерживаемого версией операционной системы
- Применяется ли приложение не загружать или даже запускать на старых платформах по мере отказа DllImport? Я не мог найти документацию об этом.
Если это так, мне придется либо полностью избегать использования этих API, либо создавать отдельную версию приложения для старых операционных систем.
Я испытаю это сам позже и уточню здесь. Однако, может ли кто-нибудь посоветовать мне рекомендуемый способ решения этой проблемы?
Я бы выбрал разные «версии» программы, вместо того чтобы пытаться заставить программу работать с любой версией S.O. – Jauch
Нет, это совершенно нормально. Это то, на что предполагается использовать DllImport. Обратите внимание, что обнаружение версии затруднено; предпочитают пытаться вызвать функцию и отказ в работе. –
Ожидается, что вы проверите OSVersion и отобразите другой экран, чтобы вызов api не прерывался с исключением. И что вы на самом деле протестируете это на старой ОС. Довольно непонятно, почему это должно быть изложено, в чем смысл этого вопроса? –