将OpenCV程序集与Costura合并的问题

时间:2017-05-26 12:45:32

标签: c# dll fody-costura

目前,我有一个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#库项目中所需要做的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

Unmanaged64Assemblies块应包含C ++ / CLI包装程序集。

该名称有点误导,它实际上是混合模式程序集的列表。即使它们未在此处列出时正确嵌入,也需要在此处列出,以使依赖关系链一直工作到本机库。

本地库不需要添加到该列表中,它们不是程序集,只是将它们放在costura64文件夹中并将它们标记为嵌入式资源就足够了。