未复制到输出目录的引用的依赖项

时间:2008-12-17 14:39:05

标签: .net visual-studio reference dependencies

我有一个我已经内置到dll中的CommonUtils库,我从我的几个项目中引用了文件。 CommonUtils依赖于log4net.dll,当构建CommonUtils.dll时,log4net.dll被设置为文件引用,copy-local = true。 log4net.dll和CommonUtils.dll不在GAC中。

MyWorkingProject中的一切正常,我只有CommonUtils.dll的文件引用 - log4net.dll显示在输出目录中(因为它是CommonUtils.dll的依赖项,但未从MyWorkingProject引用)。 但是,如果我创建一个新项目来添加一些单元测试:MyWorkingProjectTest和项目引用MyWorkingProject,然后在这里再次引用文件引用CommonUtils.dll(我想使用一些CommonUtils)然后构建log4net.dll,这是项目中的一个依赖项引用和文件引用也不会被复制到输出目录。

有人能澄清这里发生了什么吗?编译器不知道它应该抓取哪个log4net.dll文件?我在这里做错了吗?我应该以其他方式执行此操作以明确复制log4net.dll吗? 我有必要明确引用log4net吗?

3 个答案:

答案 0 :(得分:2)

这是设计的。您需要考虑引用的自动继承会产生的影响。虽然您可以在逻辑上看到引用应该是什么,但编译器没有这样的描述。理论上,如果它走遍整个依赖关系树,你最终可能会重现框架和操作系统的一个很好的部分。

这绝对是一种痛苦,我同意并理解你的挫败感,但我认为微软无法找到合理的方法来做到这一点。

答案 1 :(得分:1)

我相信如果你不在项目中添加log4net作为参考,它将不会被复制。

答案 2 :(得分:0)

当我过去遇到类似情况时,我在Visual Studio中收到编译器警告,告诉我需要添加对依赖库的引用。

编译时是否收到这样的警告?如果是这样,请按照它给出的建议,你应该找到Log4net复制到你的输出目录。