【问题标题】:No way to resolve conflict between "XYZ" and XYZ"无法解决“XYZ”和“XYZ”之间的冲突
【发布时间】:2015-10-28 07:22:26
【问题描述】:

我们刚刚在两个分支之间进行了合并(TFS)。但是现在当我编译时,我有这个错误:

No way to resolve conflict between 
"AA.BB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
and 
"AA.BB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bfd296a93930d932". 
Choosing "AA.BB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 

AA.BB”是我们的项目之一,我检查过我们仅将其作为项目引用。而且我们只有这样命名的项目。

有人知道为什么会发生此错误吗?这个 PublicKeyToken 错误是从哪里来的?

我已经尝试过的:

  • 删除对该项目的所有引用并重新进行引用
  • 搜索其中一个项目是否具有 copyLocal = true(不是这种情况)或直接引用 DLL(不是这种情况)

注意:

  • 构建被认为是成功的,但是当我启动应用程序时出现错误(基本上是一个错误,说这个 dll 与清单不匹配)
  • 如果我进入了使用这个的类,我没有错误

【问题讨论】:

  • 您是否使用延迟签名?
  • @LasseV.Karlsen 我不知道这是什么,所以我想答案是否定的 但有一点可能是我们的构建服务器更改了一些程序集信息
  • 它不应该改变构建文件之后。您已经仔细检查过您只有项目引用,并且您没有直接引用构建输出? IE。到 bin\release\AA.BB.dll ?
  • 是的,这是我检查的第一个想法(可以肯定的是,我删除了该项目的所有引用,并再次添加它们)。我看到我们目前使用密钥 AA.BB.snk 签署程序集但未选中“仅延迟签名”复选框
  • @J4N,从你上面贴的错误信息中,我们会检查这两个程序集的版本号是否相同;但一个有 publicKeyToken 而另一个没有。那么您是否曾经将程序集安装到 GAC 中?如果是这样,你卸载它,然后重新添加项目引用如何?

标签: c# .net visual-studio tfs


【解决方案1】:

我终于找到了这个问题,我发布了它,因为它可能对将来的某人有所帮助。

问题是在合并之前,有一些项目有不同的输出目录。

因此,在进行重建时,某些项目在不同目录中找到了同一项目的多个引用。

解决方案很简单:一旦输出目录手动删除就可以了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多