2009-05-03 83 views
2

我的UserControl引用C++/CLI包装到非托管C++ dll。当我尝试将UserControl添加到窗体时,我收到一个Visual Studio错误,它显示“无法创建组件'userControl'”,导致System.IO.FileNotFoundException异常。添加UserControl引用C++/CLI包装到非托管dll到表格的问题

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

有没有更好的方法来做到这一点?

回答

1

要做的最简单的事情就是将实际的.dll包含在项目中,将其构建操作标记为“内容”,然后将“复制到输出目录”设置为“始终”。这应该将.dll放到输出目录中,以便应用程序可以运行,并且只需将文件包含在项目中就可以将其放入项目目录中,以便设计人员可以找到它。

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

编辑

如果这些不工作,你也可以编辑项目本身的参考路径(在项目属性),虽然我不能肯定,这将影响到设计师。如果没有,那么你唯一真正的选择是将.dll放在其中一个系统路径目录中。

+0

我试着按照你所建议的同时使用C++/CLI包装器项目和用户控件所在的项目来解决这个问题。 – 2009-05-03 15:19:10

0

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

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