为什么原生DLL没有复制到输出目录我有一个C#项目A,它使用了一个.net包装器DLL和一个原生DLL。我将.net包装器DLL添加到项目A的引用列表中。由于如果原生DLL在同一文件夹中,则包装DLL只能使用原生DLL,因此应将原生DLL复制到项目A的输出目录中。我通过将原生DLL作为内容文件添加到项目A下来实现这一点,将其复制操作设置为更新时复制。还行吧。如果C#项目B直接引用项目A,VS会将项目A使用的所有相关文件复制到项目B的输出目录。这意味着wrapperDLL和nativeDLL也会被复制到项目B的输出目录中,这样也很好。然后我有另一个C#项目C,它只直接引用项目B,而不是项目A。有趣的是,VS不会将本机DLL复制到项目C的输出目录,否则我打算这样做,当项目C使用功能时项目B并寻找本机DLL以使用包装器DLL,它不会找到它。有人可以解释为什么VS不将本机DLL复制到项目C的输出目录中吗?VS中复制依赖链文件的机制是什么?太感谢了。基本上引用链不会传播,它取决于最顶层的程序集(exe、网站等)以确保它拥有它需要的一切,无论是在本地还是在GAC中(例如使用托管dll)。您需要将文件作为“复制到输出”添加到exe/网站。为什么不在项目A中添加原生dll作为引用呢?这将确保A在被其他库使用时始终包含在内。编辑:没关系,这仅在dll是COM或.NET组件时有效。由于项目中没有明确的依赖项,构建器不知道哪些依赖项需要用已知的二进制文件输出。您可以做的是创建一个构建后配置,以便在编译时将这些DLL复制到构建目标。你可以谷歌如何做到这一点,这是解释如何做到这一点的第一个结果之一:http://visualstudiohacks.com/articles/general/customize-your-project-build-process/以上是C#学习教程:为什么没有将本机DLL复制到输出目录?如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
