【问题标题】:Why is this .dll being copied to the output folder?为什么这个 .dll 被复制到输出文件夹?
【发布时间】:2014-04-10 14:47:54
【问题描述】:

我的解决方案中有很多项目,由于某种原因,当我(重新)构建某个项目时,它会将 Microsoft.Practices.Prism.dll 和 Microsoft.Practices.ServiceLocation.dll 带到输出文件夹。

我有一个对 Microsoft.Practices.Prism.dll 的引用,但是它被设置为 Copy Local = False,与此项目中的所有其他引用一样,并且如图所示:

我什至没有在这个项目中引用 Microsoft.Practices.ServiceLocation.dll。 Pre-build 和 Post-build 事件命令行也不包含任何可能导致此问题的内容。有人能指出发生这种情况的任何其他原因吗?

编辑:删除引用并(重新)构建也不能解决问题。

【问题讨论】:

  • 请在所有其他项目中检查此引用,可能发生的情况是此 dll 被引用到任何其他项目,本地是并且您在此项目中引用它。也可以尝试将此特定版本设置为 false。
  • 无法诊断,您需要将 MSBuild 详细程度更改为详细。请以此为契机将此程序集引用的 Copy Local 属性设置为 True,用户不会像您那样将其安装在 GAC 中。
  • @NipunAmbastha 我进行了检查,之前认为这不是问题,但是当然,由于我可能遗漏了很多项目,所以我会再次检查。如果还有其他可能性我想知道,谢谢。
  • @HansPassant 也许不是最佳实践,但我们有一个文件夹,其中包含所有不属于我们的必要 .dll 引用(如 Microsoft.Practices.Prism.dll),它被添加到安装程序。所以我们不需要将它复制到输出文件夹中,虽然它没有不良影响,但更多的是好奇和组织的问题。
  • 你是对的,不以在用户机器上运行的方式测试代码绝不是一个好习惯。还极大地使您面临团队中的另一个程序员发现此安装程序的解决方法不复制所有必需文件的风险。例如,他可能手动编辑了项目文件以添加复制任务。

标签: c# .net visual-studio-2010 visual-studio dll


【解决方案1】:

这也可能是由于间接引用。我的意思是,如果您在应用程序中引用了一个库,它可能需要这些 dll 中的任何一个,那么这些将被复制到 bin 文件夹中。对于 ServiceLocation 之一,您可能正在使用 IoC 的 Unity 框架。

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2013-08-18
    • 2012-07-02
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多