本机互操作性

以下文章介绍了在 .NET 中执行“本机互作性”的各种方法。

出于以下几个原因,需要调用本机代码:

  • 操作系统附带大量不在托管类库中的 API 接口。 此场景的一个典型示例是访问硬件或操作系统管理功能。
  • 与其他具有或可生成 C 式 ABI(本机 ABI)的组件通信,如通过 Java 本机接口 (JNI) 公开的 Java 代码或可生成本机组件的任何其他托管语言。
  • 在 Windows 上,大多数已安装的软件(如 Microsoft Office 套件)注册表示其程序的 COM 组件,并允许开发人员自动执行或使用这些组件。 这还需要原生互操作性。

上一个列表不包括开发人员希望/喜欢/需要与本机组件进行交互的所有潜在情况和方案。 例如,.NET 类库使用本机互操作性支持来实现相当数量的 API,例如控制台支持、文件系统访问等。 但务必应知道,在需要的情况下是有其他选择的。

注释

本部分中的大部分示例都针对 .NET Core(Windows、Linux 和 macOS)的所有三个受支持平台提供。 但是,在某些简短的演示性示例中,只显示了一个使用 Windows 文件名和扩展名(即,库的扩展名“dll”)的例子。 这并不意味着这些功能在 Linux 或 macOS 上不可用,只是为了方便起见而完成。

另请参阅