令人困惑的标题,令人困惑的问题,但我希望我能引起你的注意.要点:
我有一个包含三个项目的VS解决方案.
我在Project1中包含了Native.dll ,并将其配置为复制到输出文件夹.
此设置将导致DllImport失败,表示无法找到目标DLL.原因很简单.我正在运行Project 2或3,并且在每种情况下:
Project2:构建时,它复制构建过程生成的Project1.dll但不复制Native.dll.运行代码时,该文件夹是$ ProjectDir\bin\Debug(或release),并且Native.dll不可用.
Project3:这是一个MSTest项目; 当要求运行所有测试时,它会编译应用程序并将输出exe和dll复制到输出文件夹.但是它不会复制Native.dll.
在这两个示例中,DLL都被复制到Project1的调试文件夹,这是无用的.
有没有一种简单的方法来纠正这个项目?简单来说,我的意思是我想避免使用Post Build进行复制或其他手动过程.我还想尝试避免使用绝对路径来复制.dll.
我正在使用Visual Studio 2010.
谢谢!
更新:上面的场景说明Project3引用了Project1,但事实并非如此.Project3引用Project2,引用Project1.在这种情况下,Native.dll将复制到Project2输出文件夹,但不会复制到Project3输出文件夹.我还添加了类库类型的Project4,添加了对Project2的引用,它也没有复制.
换句话说,如果项目P [A]具有带有"复制到输出"规则的项目X并且P [B]引用它,则P [B]也复制X.但是,如果P [C]引用P [ B],它忽略了复制规则.
在项目中添加对"Native.dll"的引用.在文件的属性窗口中,将"Build Action"设置为"None",将"Copy to Output Directory"设置为"Always",或"Copy if Newer"
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |