有效负载包含两个或多个具有相同目标路径“System.Diagnostics.Tools.dll”的文件

Posted

技术标签:

【中文标题】有效负载包含两个或多个具有相同目标路径“System.Diagnostics.Tools.dll”的文件【英文标题】:Payload contains two or more files with the same destination path '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 不兼容。 你发现这个帖子***.com/questions/31851012/… 有用吗?似乎不是一个好的解决方案,但对我有用。 【参考方案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尝试以下操作

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

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

    删除以下文件:

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

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

【讨论】:

【参考方案6】:

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

我的项目在 D:\

当我将项目移动到 C:\

时问题解决了

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

以上是关于有效负载包含两个或多个具有相同目标路径“System.Diagnostics.Tools.dll”的文件的主要内容,如果未能解决你的问题,请参考以下文章

具有多个目标的iOS扩展

聚合具有两个或多个具有相同值的列的行

两个或多个 Drupal 视图页面显示是不是可以共享相同的路径?

找到具有相同有效负载的 TCP 数据包的概率?

如何在jmeter tcp采样器中发送多个十六进制数据有效负载?

在具有循环或 lambda 的多个数据帧中添加具有相同字符串值的列的更有效方法?