【发布时间】:2018-12-28 14:35:39
【问题描述】:
我的解决方案中有几个项目通过 nuget 引用 System.ValueTuple.dll。所有这些项目的程序集路径都定义为相同,但 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 不采用我定义的引用或者只是失败,如果它不存在?它还在引用属性窗口中显示错误的路径。
我可以在多台机器上重现这种行为。如果我签出一个有问题的项目文件,添加一个空行并重新加载它,然后它会正确解析引用。但我的意思是,我并没有真正做出改变。如果我重新映射工作区,问题又回来了。
希望你们能帮助我。提前致谢!
【问题讨论】:
-
为什么将其标记为私有?它现在是框架的一部分。
-
我们必须坚持使用 .net 4.6.1 一段时间。
标签: c# .net visual-studio msbuild visual-studio-2017