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

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

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

最佳答案

这个故事尚未完全充实,但是已经有一些示例。最终,我们(从事此工作的Microsoft团队)正在某些场景下工作,以使NuGet软件包能够更好地支持软件包中的本机内容。

要查看此示例,Kestrel web server具有自己的一些托管代码,并且在其NuGet包中还包含libuv,以实现跨平台的高效异步IO实现。

由于NuGet还没有内置的通用解决方案,因此Kestrel的构建脚本使用一些custom actions将本机内容包含在NuGet包中。然后要加载libuv,有一个some code,它根据运行的环境动态计算出要加载的本地libuv。

所以,是的,虽然有点混乱,但确实有效,这在提高团队优先级上绝对是头等大事。

关于pinvoke - 与ASP.net vNext中的非托管代码互操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27967220/

10-11 22:30
查看更多