首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么没有将本机DLL复制到输出目录

为什么没有将本机DLL复制到输出目录
EN

Stack Overflow用户
提问于 2009-05-13 05:55:34
回答 3查看 5.9K关注 0票数 9

我有一个使用.net包装器动态链接库和本机动态链接库的C#项目A。我将.net包装器DLL添加到项目A的引用列表中。由于包装器DLL只有在本机DLL和本机DLL在同一文件夹中时才能工作,因此本机DLL应该复制到项目A的输出目录中。为此,我将本机DLL作为内容文件添加到项目A下,并将其复制操作设置为如果更新则复制。这很好。

如果C#项目B直接引用项目A,VS会将项目A使用的所有相关文件复制到项目B的输出目录中。这意味着包装器DLL和本机DLL也会复制到项目B的输出目录中。这也可以很好地工作。

然后我又有了另一个C#项目C,它只直接引用项目B,而不是项目A。有趣的是,VS不会将本机DLL复制到项目C的输出目录中,这也是我打算做的,否则,当项目C使用项目B的功能并查找本机DLL以与包装器DLL一起工作时,它将找不到它。

有人能解释一下为什么VS不把本地DLL复制到项目C的输出目录下吗?在VS中复制链依赖文件的机制是什么?非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-13 06:02:19

基本上,引用链不会传播,它取决于最顶层的程序集( exe、web-site等),以确保它拥有所需的一切,无论是在本地还是在GAC中(例如使用托管的dll)。您需要将文件添加到exe/web-site中,名为"copy to output“。

票数 6
EN

Stack Overflow用户

发布于 2009-05-13 08:33:12

为什么不在项目A中添加本机dll作为引用呢?这将确保当其他库使用A时,它将始终包含在内。

编辑:不要紧,只有当动态链接库是COM或.NET组件时才有效。

票数 0
EN

Stack Overflow用户

发布于 2009-05-13 11:46:17

因为项目中没有显式的依赖项,所以构建器不知道这些需要与已知的二进制文件一起输出。您可以做的是创建生成后配置,以便在编译时将这些DLL复制到生成目标。你可以Google how to do that,这是解释如何做到这一点的首批结果之一:

http://visualstudiohacks.com/articles/general/customize-your-project-build-process/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/856278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档