构建托管代码时,Visual Studio 正确(并递归地)将引用的托管项目的 dll 复制到正在构建的项目的输出文件夹中。
但是,如果这些引用之一是依赖于非托管 DLL 的托管 DLL,则这些非托管 DLL 不会复制到输出文件夹,即使它们的相应项目位于同一解决方案中并被列为托管 DLL 的依赖项。
我意识到这个问题可以通过让所有项目使用相同的输出文件夹来解决。我们已经对大多数项目这样做了,但我们更喜欢将单元测试输出文件夹分开,从而导致使用具有非托管依赖项的托管 Dll 的单元测试出现上述问题。
我们现在使用的解决方案是预构建事件来复制必要的 DLL,但这会浪费时间并且容易出错,因为需要对使用托管 DLL 的每个项目重复该操作。
因此,我想知道是否有一种方法可以让构建系统了解,每当它决定复制托管 DLL 时,它应该始终复制托管 DLL 的非托管依赖项?
一种解决方法似乎是向托管 DLL 项目添加另一个节点,命名非托管 DLL 并设置生成操作 =“无”,并将复制到输出目录 =“如果较新则复制”。
编辑:对于构建 C++/CLR 项目,我认为这可行:
添加节点,并将其构建工具设置为自定义构建工具。然后,在“自定义构建步骤”页面中,设置Command to 复制 $(InputPath) $(OutDir)和Outputs to $(输出目录)\$(输入文件名)。看起来应该可行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)