我有一个我创建的dylib(libextern.dylib
),其中包含以下内容:
int extern_test()
{
return 123;
}
我有一个目标netstandard1.5和net451的库,其中包含:
[DllImport("libextern.dylib", EntryPoint="extern_test")]
public static extern int ExternTest();
最后,我有一个.net核心CLI应用程序,它调用库的ExternTest()
。它有一个对库的项目引用:
"dependencies" : {
"MyLibrary": {
"version": "0.0.1",
"target": "project"
}
}
如果我将libextern.dylib放入CLI项目的根目录,那么ExternTest()会按预期返回123
。
我希望在我的库中包含libextern.dylib
,而不是将其放入我的CLI项目中。我也遵循了How to Use Native Dependencies说明(我认为其他各种指南与rc2已经过时了)但在致电DllNotFoundException
时我得到ExternTest()
。
图书馆的project.json
包含:
"buildOptions": {
"allowUnsafe": true
},
"packOptions": {
"files": {
"mappings": {
"runtimes/osx/native/": "libextern.dylib"
}
}
}
How to Use Native Dependencies说明省略了"mappings"
,但我尝试了两种方式,发现libextern.dylib
需要包含在nuget包中。
我还尝试将libextern.dylib
打包到另一个包中(How to Use Native Dependencies说明中的选项2),但这对我也不起作用。
我在这里做错了什么?这可能是.net core rc2的一个问题吗?
更新:使用.Net Core 1.0进行测试,行为相同。
更新2:我已将此问题记录为.Net Core github project上的问题,以防.Net Core或文档出现问题。