【问题标题】:Interop with unmanaged code in ASP.net vNext与 ASP.net vNext 中的非托管代码互操作
【发布时间】:2015-03-14 01:40:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: pinvoke unmanaged asp.net-core


    【解决方案1】:

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

    举一个例子,Kestrel web server 有一些自己的托管代码,此外它还在其 NuGet 包中包含libuv,以实现跨平台的高效异步 IO 实现。

    由于 NuGet 中还没有内置的通用解决方案,Kestrel 的构建脚本使用一些 custom actions 将本机内容包含在 NuGet 包中。然后加载 libuv,some code 会根据运行环境动态确定要加载哪个原生 libuv。

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

    【讨论】:

    • 很高兴听到这个消息。如果我们采用您假设的 libuv 包,我们是否能够创建单个 xplat nuget 包(包括本机 windows/unix/osx 二进制文件),还是必须使用每个平台的包?
    • @JackieNg 一个包来统治他们,就像 Kestrel 包一样,这不是假设的——它是一个真正的包。它具备在 Win7+、Win2K8 R2+、OS X 和 *nix 上运行所需的功能。
    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多