【问题标题】:Payload contains two or more files with the same destination path 'System.Diagnostics.Tools.dll'有效负载包含两个或多个具有相同目标路径“System.Diagnostics.Tools.dll”的文件
【发布时间】:2016-11-30 08:03:12
【问题描述】:

在我将 Nuget 中的 2 个库添加到我的项目后,我收到以下错误:

Error       Payload contains two or more files with the same destination path 'System.Diagnostics.Tools.dll'. Source files: 
C:\Users\Horcrux7\.nuget\packages\runtime.any.System.Diagnostics.Tools\4.0.1\lib\netcore50\System.Diagnostics.Tools.dll
C:\Users\Horcrux7\.nuget\packages\System.Diagnostics.Tools\4.0.0\lib\netcore50\System.Diagnostics.Tools.dll App1            

如何解决这个版本冲突?

我只有一个非常小的单个 UWP 项目。

【问题讨论】:

  • 您是否引用了一些预发布的 nuget 包?
  • 我添加了对 2 个不同库的 2 个引用,这些库再次编译不同的版本。这应该不是很奇特。应该有一个通用的结构来解决这种冲突。
  • 也许您可以考虑降级您引用的库之一。我看到相同的错误参考 System.Net.Sockets 4.1.0。但是,降级到 4.0.0 后,一切正常。
  • 不,无法降级,因为旧版本与 UWP 不兼容。
  • 你发现这个帖子stackoverflow.com/questions/31851012/… 有用吗?似乎不是一个好的解决方案,但对我有用。

标签: visual-studio reference nuget uwp


【解决方案1】:

问题已自行解决。更新到最新版本的 Microsoft.NETCore.UniversalWindowsPlatform 已经解决了这个问题。

看起来库 A 是针对版本 5.1.0 编译的,而库 B 是针对版本 5.2.2 编译的。因为我的项目是在 5.1.0 版本上,所以出现了冲突情况。我不明白为什么我切换UWP版本没有冲突。

如果我将库 B 与旧 UWP 版本一起使用,也没有冲突。

【讨论】:

  • 我遇到了完全相同的问题。同一个DLL。同样的 5.1.0/5.2.2 冲突。我很惊讶 Visual Studio / nuget 没有通过在包安装/恢复时将 Microsoft.NETCore.UniversalWindowsPlatform 更新到 5.2.2 来解决此版本不匹配问题。
【解决方案2】:

以防万一它对遇到相同错误的其他人有用 - “有效负载包含具有相同目标路径的两个或多个文件......” - 这可能是由与 NuGet 包的迷宫相关的各种原因引起的,解决此类 NuGet 相关错误的一种方法是clearing the cache,或者只是删除有问题的 NuGet 包文件夹:C:\Users\user\.nuget\packages\

这是基于我自己处理类似错误(包括这个特定错误)的经验。

编辑(2018-07-22): 通过简单地重新启动 Visual Studio,我一直很幸运能够处理这个和类似的问题。微软可能最终会解决这个错误。我只有在构建发布版本时才会遇到这种问题。

【讨论】:

  • 我也有同样的想法,这只是对我有帮助的一个,但除了包版本不兼容之外,我在路径上还有其他不同
  • @W0RT4 当我构建 UWP 应用的发布版本时,它会反复发生。我现在只删除 C:\Users\user\.nuget\packages\microsoft.netcore.portable.compatibility,它总是有效的。我需要找到一个永久的解决方案。
  • 在我的情况下尝试删除 project.nuget.targets 文件它会有所帮助(我希望永久)
  • 我在使用 VS 2019 版本 16.2.3 构建发布版本时遇到此错误,即使所有参考的 nuget 包都是最新的。但是我正在运行其他项目,其中我有一个较旧的 nuget 包。我关闭了那个项目,然后我就可以成功创建包了。
【解决方案3】:

就我而言,我选择了“任何 CPU”选项,因此它为两个版本编译了同一个库。选择 x64 为我解决了这个问题。

【讨论】:

  • 我在 Xamarin.Forms UWP 项目发布版本中得到了这个,并且遇到了类似的问题。在我尝试以 x86 构建/运行时,项目属性 Build 部分选择了 x64。乌斯曼指出,匹配这两个设置可以解决问题。
  • 我在 UWP 和 MVVM 交叉上也遇到了这个问题。
【解决方案4】:

我将 Microsoft.EntityFrameworkCore.Sqlite 降级到 2.2.6 然后解决了问题。

【讨论】:

    【解决方案5】:

    您可以在VS2019尝试以下操作

    1. 使用工具更新Microsoft.NETCore.UniversalWindowsPlatform-->Nuget 包管理器--> 管理解决方案的 Nuget 包

    2. 工具-->Nuget 包管理器--> 包管理器设置-->清除所有 Nuget 缓存

    3. 删除以下文件:

    <package Name>\bin\x86\Release
    <package Name>\bin\x64\Release
    <package Name>\bin\Arm\Release
    
    1. 构建--> 每个版本的清洁解决方案,发布 x86 等

    终于为我工作了。如果这仍然失败,使用 VS2017 构建一个包可能会起作用。

    【讨论】:

      【解决方案6】:

      我使用的是 Microsoft.NETCore.UniversalWindowsPlatform 版本 6.2.12

      我的项目在 D:\

      当我将项目移动到 C:\

      时问题解决了

      虽然我不明白原因 :( D:\ 的路径是一条短的全 ASCII 路径。

      【讨论】:

        【解决方案7】:

        更新 Microsoft.EntityFrameworkCore.Sqlite 版本 3.1.2 解决了我的问题。

        【讨论】:

          【解决方案8】:

          对于Default.rd.xml,我从我的单元测试项目中删除了重复项,然后能够运行我的测试。

          【讨论】:

            猜你喜欢
            • 2016-12-14
            • 2019-03-19
            • 2017-08-25
            • 1970-01-01
            • 2018-10-03
            • 2021-10-21
            • 2019-04-01
            • 2018-06-29
            • 1970-01-01
            相关资源
            最近更新 更多