My UserControl将C ++ / CLI包装器引用到非托管C ++ dll。当我尝试将UserControl添加到表单时,我收到一个Visual Studio错误,该错误表示“无法创建组件'userControl'”,并将System.IO.FileNotFoundException作为原因。

从我能够确定的,问题源于visual studio不复制C ++ / CLI包装程序集的非托管依赖项。如果我将非托管依赖项放在系统PATH上,一切正常。

有更好的方法吗?

有帮助吗?

解决方案

最简单的方法是在项目中包含实际的.dll,将其构建操作标记为“Content”,然后将Copy to Output Directory设置为“Always”。这应该将.dll放到您的输出目录中,以便您的应用程序可以运行,只需在项目中包含该文件就应该将它放在项目目录中,以便设计人员可以找到它。

确保您的安装项目还包含该项目内容文件的项目输出。

修改

如果这些不起作用,您也可以编辑项目本身的参考路径(在项目属性中),但我不确定这会影响设计者。如果没有,那么你唯一真正的选择是将.dll放在一个系统路径目录中。

其他提示

旧线程,但提交我的解决方案,因为我刚刚遇到问题,并在此过程中发现了这个问题。

基本上我只是在我的包装器C ++ / CLI库中使本机DLL延迟加载。由于包装器的C ++ / CLI部分包含Visual Studio和框架使用的接口规范,因此永远不需要或加载本机DLL。我在这个问题上回答了一些细节: https://stackoverflow.com/a/15481687/34440

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top