c# - Visual Studio 2017 无法正确解析特定引用
问题描述
我的解决方案中有几个System.ValueTuple.dll
通过 nuget 引用的项目。对于所有这些项目,程序集的路径定义为相同,但 Visual Studio 2017 以不同方式解决它。这导致它一遍又一遍地构建大部分项目,尽管没有任何变化。
下面是如何在项目文件中定义引用的示例(同样,所有项目都相同):
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\System.ValueTuple.4.4.0\lib\net461\System.ValueTuple.dll</HintPath>
<Private>True</Private>
</Reference>
这是我得到的消息,当 Visual Studio 错误地解析项目的引用并因此再次构建它时,无论是否有更改:
项目“XXX”不是最新的。CopyLocal 参考源 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ValueTuple.dll' 比 'C: \Src\Current.Release\Bin\Debug\System.ValueTuple.dll'。
为什么 Visual Studio 不采用我定义的引用或只是失败,如果它不存在?它还在引用属性窗口中显示错误的路径。
我可以在多台机器上重现这种行为。如果我签出一个有问题的项目文件,添加一个空行并重新加载它,它会正确解析引用。但我的意思是,我并没有真正做出改变。如果我重新映射工作区,问题就会回来。
希望你们能帮助我。提前致谢!
解决方案
Visual Studio 2017 无法正确解析特定引用
这是因为:
这是由于对 NETStandard 2.0 的注入支持。我们将新程序集注入 NET 4.6.1 及更高版本的桌面项目,以增加对 netstandard2.0 的支持。我们现在在目标而不是包中执行此操作,因为它不再需要引用包来构建网络标准库。每当我们看到引用了 netstandard1.5 或更高版本的库时,就会发生这种注入(参见 dotnet/sdk#1386)。
要解决此问题,您可以将绑定重定向添加到这些引用。
检查从 MSBuild 工具复制/加载的 System.Net.Http v4.2.0.0 以了解更多详细信息。
希望这可以帮助。
推荐阅读
- ios - 如何从 HealthKit 获取每次锻炼的心率数据
- symfony - Symfony:迁移失败,因为命令运行了意外的旧版本
- php - 为什么尝试上传图片配置文件时以下图片很奇怪
- node.js - Mongoose 与组不工作的聚合
- apache-flink - 如何在 Apache Flink 中使用流实现 LEFT OUTER JOIN
- octopus-deploy - 日期时间值在变量保存时转换
- ios - 搜索栏动画覆盖
- java - 首选项 XML 中不允许元素?
- css - 为什么在我的网站的移动版本上,视频和容器之间有空间?
- javascript - 使用 react-native-svg-pan-zoom 缩放后 Svg 图像变得模糊