Zip*_*nor 9 dll dependencies unmanaged managed visual-studio
正确构建托管代码Visual Studio(并递归地)将引用的托管项目的dll复制到正在构建的项目的输出文件夹中.
但是,如果其中一个引用是依赖于非托管dll的托管DLL,则这些非托管DLL不会复制到输出文件夹,即使它们在相同解决方案中的相应项目并列为托管DLL的依赖项.
我意识到可以通过让所有项目使用相同的输出文件夹来解决此问题.我们已经为大多数项目执行了此操作,但我们更喜欢将单元测试输出文件夹分开,导致上述问题用于使用具有非托管依赖项的托管Dll的单元测试.
我们现在使用的解决方案是复制必要的DLL的预构建事件,但这会浪费时间并且容易出错,因为需要为使用托管DLL的每个项目重复这些事件.
因此,我想知道是否有一种方法可以让构建系统理解它应该总是在它决定复制托管DLL时复制托管DLL的非托管依赖项?
一种解决方法似乎是向托管DLL项目添加另一个节点,命名非托管DLL并设置Build Action ="None",并复制到输出目录="如果更新则复制".
编辑:为了构建一个C++/CLR项目,我认为这样可行:
添加节点,并将其构建工具设置为Custom Build Tool.然后,在Custom Build Step页面中,将Command设置为将$(InputPath)$(OutDir)和Outputs 复制到$(OutDir)\ $(InputFileName).看起来应该有用.