从几个项目引用相同的程序集

时间:2014-01-25 06:53:32

标签: .net visual-studio-2010 msbuild

我的项目包含以下文件夹结构:

ThirdParty
  v1
    Common.Dependency.dll

Solution
  Project A
  Project B
  Project C

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

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

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

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

1 个答案:

答案 0 :(得分: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?如果您只是将ThridParty / Common.Dependency.dll替换为新的v2,那么您不必更新其他项目中的任何内容,因为它们会自动使用它(除非设置了特定版本 - 但即便如此,您也不会风险有相同图书馆的两个版本)
  • 如果ThirdParty支持,则使用NuGet。它旨在准确地处理这样的问题,并且只需在包管理器中点击几下即可更新到更新的版本。