我目前正在尝试将~350个原生C dylib打包到单个nuget for macOS中。 .targets文件应该在最终的mac .app中捆绑dylib,同时保持这些dylib的特定文件夹架构。
如果相关,那么大多数dylib都是Mach-0 64-bit bundle x86_64
,这就是为什么我认为NativeReference
不起作用的原因。这是正确的假设吗?
我需要使用C#for P / Invoke加载Objc运行时的几个Mach-0 64-bit dynamically linked shared library x86_64
(它们将处理捆绑的那些,并期望它们位于特定的相对位置)。
我的尝试在https://github.com/mfkl/libvlc-nuget/pull/5/files。您可以随意忽略MSBuild插件cherry-picking work。
我无法让所有的dylib成为里面的<。em> mac .app包并在那里创建文件夹。
编辑:添加更多信息。
尝试NativeReference
,Content
,EmbeddedResource
和BundleResource
。这些文件要么不被包含在内,要么最终放在.app捆绑包旁边的bin/debug
中,如果我错了,那么这个文件就更正了,这不是您在发送图书馆时想要的。不确定使用什么或路径是否错误,但VS中的MSBuild反馈似乎不存在。
任何帮助都非常感激。
答案 0 :(得分:0)
在不调试构建的情况下,很难分辨(因为我没有看到构建日志),但是我敢打赌,您将NativeReference项目添加到项目中太晚了,以至于mmp都看不到它们。 / p>
从理论上讲,可以动态生成项目NativeReference供Xamarin.Mac项目处理,但是需要在之前 this.clearForces = function(force) {
ball.xVelocity = 0;
//ball.yVelocity = 0;
}
进行,我们在此处处理这些项目。我不确定,它甚至可能需要在<ConstraintLayout>
<Other TextView> </Other TextView>
<ListView> </ListView>
</ConstraintLayout>
之前发生。
但是,是的,通常,您希望使用NativeReference将您的项目添加到最终捆绑包中。根据您的库,可能必须添加install_name_tool游戏来修复相对的依赖路径。 MMP(打包工具)知道如何使用NativeReference来处理其中的一些问题。
如果需要进行构建后调整,则可以使用MSBuild示例(CreateAppBundleDependsOn)中显示的路由。 https://github.com/xamarin/mac-samples/blob/master/UseMSBuildToCopyFilesToBundleExample/UseMSBuildToCopyFilesToBundleExample/CustomBuildActions.targets