目前,我有一个C ++ / CLI包装器项目,它引用了一些OpenCV dll。然后,包装器项目由我创建的C#库项目引用。
使用Costura,包装器在我的C#库中正确合并,但OpenCV dll没有合并(因为我们的C#proj没有直接引用它们,copy local设置为true)。
我将所有OpenCV程序集放入位于项目根目录的costura64
文件夹中,并将Unmanaged64Assemblies
元素添加到weavers xml中列出的所有必需的OpenCV dll,但无效。< / p>
我还将IncludeAssemblies
元素添加到Weavers xml中,其中包含所有必需的OpenCV dll,这会导致构建时出错:
MSBUILD:错误:Fody / Costura:无法找到程序集“成像”(甚至不是CopyLocal ='false'),请更新配置
My Weavers XML看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<IncludeAssemblies>
Imaging
msvcp100d
msvcp110d
msvcr100d
opencv_core247
opencv_core247d
opencv_highgui247
opencv_highgui247d
opencv_imgproc247
opencv_imgproc247d
PvAPI
</IncludeAssemblies>
<Unmanaged64Assemblies>
Imaging
msvcp100d
msvcp110d
msvcr100d
opencv_core247
opencv_core247d
opencv_highgui247
opencv_highgui247d
opencv_imgproc247
opencv_imgproc247d
PvAPI
</Unmanaged64Assemblies>
</Costura>
</Weavers>
所有程序集目前都有Build Action
Embedded Resource
。
对于将OpenCV程序集合并到我的C#库项目中所需要做的任何帮助都将不胜感激。
答案 0 :(得分:0)
Unmanaged64Assemblies块应包含C ++ / CLI包装程序集。
该名称有点误导,它实际上是混合模式程序集的列表。即使它们未在此处列出时正确嵌入,也需要在此处列出,以使依赖关系链一直工作到本机库。
本地库不需要添加到该列表中,它们不是程序集,只是将它们放在costura64文件夹中并将它们标记为嵌入式资源就足够了。