如果我有操作系统版本不支持的 API 的 DllImport (C# .NET) 会发生什么

What happens if I have DllImport (C# .NET) for an API not supported by the operating system version

我需要调用一些系统 API,只有 Windows Vista 客户端或 Windows 2008 Server 以后才支持这些 API。所以,我正在使用 DllImport 并调用这些方法。但是,我的 WPF 应用程序还必须支持旧平台(尽管客户端很少)。所以,我的计划是先检测操作系统,然后显示不同的屏幕,而不是调用那些不受支持的 API。但我想知道预期的行为

如果是这种情况,那么我将不得不完全避免使用这些 API,或者必须为旧操作系统构建一个单独的应用程序版本。

我稍后会自己测试这个并相应地更新在这里。但是,任何人都可以指导我处理此问题的推荐方法吗?

程序集将毫无问题地加载。调用导入的非托管函数将引发 EntryPointNotFoundException.

查看异常文档的备注:here。它声明在以下情况下引发异常:

The call to a function in a Windows DLL cannot be resolved because the function cannot be found.

因此您可以简单地将对函数的调用包装在 try-catch 中,并以这种方式处理函数不存在的情况。