在ASP.net vNext中使用非托管代码进行互操作

jum*_*kie 2 pinvoke unmanaged asp.net-core

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

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

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

Eil*_*lon 5

这个故事尚未完全充实,但已经有如何做到这一点的例子.最终,我们(致力于此的Microsoft团队)正致力于某些方案,以使NuGet包能够更好地支持包中的本机内容.

要查看其中的一个示例,Kestrel Web服务器具有一些自己的托管代码,并且在其NuGet包中包含libuv,以实现跨平台的高效异步IO实现.

由于NuGet中还没有内置的通用解决方案,因此Kestrel的构建脚本使用一些自定义操作将本机内容包含在NuGet包中.然后,为了加载libuv,有一些代码可以动态地根据运行环境来计算要加载的本机libuv.

所以,是的,它有点混乱,但它确实有效,这在团队的优先级列表上肯定是很高的.