【问题标题】:Reference same assembly from several projects从多个项目中引用相同的程序集
【发布时间】:2014-01-25 06:53:31
【问题描述】:

我的项目具有以下文件夹结构:

ThirdParty
  v1
    Common.Dependency.dll

Solution
  Project A
  Project B
  Project C

所有项目输出复制到共享 bin 文件夹。

所有项目都从 v1 开始引用 Common.Dependency.dll。

当新版本的 Common.Dependency.dll 可用时 - v2。 作为一个新手,我不知道所有项目都从第三方引用相同的程序集。 我只是在我的项目(项目 A)中添加新版本并更新参考路径。

现在我不知道将什么程序集复制到解决方案输出。 是否有解决此类问题的 VS 插件、检查或构建阶段工具? 我希望在这种情况下看到构建失败。

【问题讨论】:

    标签: .net visual-studio-2010 msbuild


    【解决方案1】:

    您应该更改所有 3 个项目的引用,否则它们将继续使用旧的 dll。这意味着,如果“Copy Local”设置为 true,则每个项目都会将 dll 复制到共享 bin 目录中。也就是说,当项目A引用v2 dll,B和C引用v1 dll,而B或C在A之后构建时,v1 dll最后复制到共享目录,从而覆盖v2 dll。请注意,如果新程序集中的函数/类具有不同的签名,您只会遇到构建问题。

    你可以做几件事:

    • v2 是 v1 的更新版本。那你为什么还保留v1?如果您只是用新的 v2 替换 ThridParty/Common.Dependency.dll,则您不必在其他项目中更新任何内容,因为它们会自动使用它(除非设置了特定版本 - 但即使那样你也不会冒着拥有同一个库的两个版本的风险)
    • 如果第三方支持,请使用 NuGet。它旨在准确处理此类问题,只需在包管理器中单击几下即可更新到新版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多