与 ASP.net vNext 中的非托管代码互操作

Interop with unmanaged code in ASP.net vNext

关于与 ASP.net vNext / Core CLR 的非托管代码互操作的故事(如果有的话)是什么?

关键位(DllImport 和朋友)似乎存在以允许非托管代码互操作,但打包和部署等事情在这种情况下如何工作? vNext / CoreFX 中的基本构建工件不再是程序集,而是 NuGet 包。那么在那种情况下,我们如何使新的 project.json 系统工作,以便我们 P/Invoking 进入的非托管 dll 也包含在生成的 NuGet 包中?

或者我是在谈论尚未考虑的场景(或者更令人失望的是,不会发生)?

这个故事还没有完全充实,但已经有如何做到这一点的例子。最终,我们(从事此工作的 Microsoft 团队)正在研究一些方案,以使 NuGet 包能够更好地支持包中的本机内容。

要查看其中的一个示例,其 NuGet 包中的 Kestrel web server has some of its own managed code, plus it includes libuv 是一种高效的跨平台异步 IO 实现。

由于 NuGet 中还没有内置的通用解决方案,因此 Kestrel 的构建脚本使用了一些 custom actions to include the native content in the NuGet package. Then to load libuv there's some code 可以根据其所在的环境动态确定要加载的原生 libuv 运行.

所以,是的,它有点乱,但它确实有效,这绝对是团队需要改进的优先事项。