我已经使用 windows 窗体和 C# 开发了一个 opencv 应用程序。
我从 Nuget 包管理器(EMGU.CV 和 ZedGraph)获得的 opencv 包。
在visual studio中一切正常,但是当我发布项目并在我的机器上安装程序时,当我单击执行一些opencv操作的按钮时,它会引发异常。
我猜最终发布的项目没有附带opencv包,那么发布时如何使其导出,我认为这将是一个自动化过程,我已经使用了其他nuget包并且我没有问题它。
我在这里缺少什么?
经过几天等待答案并寻找解决方案后,我已经找到了解决此问题的方法。
我遇到了这个问题:“Emgu.CV.CvInvoke”的类型初始值设定项抛出异常
这让我想到了这个:http : //www.emgu.com/wiki/index.php/Download_And_Installation#The_type_initializer_for_.27Emgu.CV.CvInvoke.27_threw_an_exception。
更准确地说,这部分:
首先,我不知道为什么编译在visual studio环境中运行良好,为什么在发布项目时不能正常运行。出于某种原因,Nuget 包不足以发布项目,您需要自己手动添加 .dll 文件(不确定为什么我以前使用过 Nuget 包时会发生这种情况,并且不需要此解决方法)。
要查找 .dll 文件,请转到项目目录,然后转到 bin\Debug\x64 或 bin\Debug\x86(取决于您的目标操作系统 - 32 位或 64 位 - 在我的情况下,我添加了所有x86 文件夹中的 .dll 文件,如果有疑问,我想您可以从两个文件夹中添加)。
每次在 Visual Studio 环境中运行项目时,都会生成项目的 Debug 文件夹,因此如果您的 Debug 文件夹为空,那么您只需要运行一次项目即可在该文件夹中找到自动生成的文件。顺便说一句,你可以使用bin中的Debug或Release文件夹,只要记住检查你是在Debug模式下编译项目的Debug文件夹,还是Release模式下的Release文件夹,否则所需的文件夹将为空,如前所述,我发现生成的文件之间没有差异,我添加了 Debug\x86 中的 dll 文件。
找到 .dll 文件后,转到 Visual Studio,右键单击解决方案资源管理器选项卡中的项目,然后添加 ---> 现有项目。
转到 .dll 文件所在的文件夹,全选并单击添加。
完成此操作后,.dll 文件将显示在解决方案资源管理器中。
右键单击解决方案资源管理器中添加的每个 .dll 文件,然后单击属性打开属性选项卡。在“属性”选项卡上,转到“复制到目录”选项并将该字段更改为“始终复制”(上面提供的 emgu 文档链接指出使用选项“如果更新则复制”,但为了确保我选择“始终复制”,它工作正常为我)。对添加的所有 .dll 文件重复该过程。
现在您已准备好按原样发布项目,请记住每次在发布项目之前都执行此操作以查看是否缺少 .dll 文件,因此一旦您获得程序的最终版本,请运行它,然后确保检查 .dll 文件,它可能需要添加或删除新文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句