C# 由于我不太理解的错误而无法生成-“ReferencePath”未定义元数据“CopyLocal”的值

C# 由于我不太理解的错误而无法生成-“ReferencePath”未定义元数据“CopyLocal”的值,c#,visual-studio,visual-studio-2017,C#,Visual Studio,Visual Studio 2017,我最近一直在更新一个项目,但我无法构建此项目进行测试,因为以下错误将部分路径向下修剪,使其更短: 项目列表引用路径中的项目C:\Users..blah..\packages\System.Runtime.WindowsRuntime.4.6.0-preview4.19212.13\build\net461..\ref\netstandard2.0\System.Runtime.WindowsRuntime.dll未定义元数据CopyLocal的值。要使用此元数据,请通过指定%ReferenceP

我最近一直在更新一个项目,但我无法构建此项目进行测试,因为以下错误将部分路径向下修剪,使其更短:

项目列表引用路径中的项目C:\Users..blah..\packages\System.Runtime.WindowsRuntime.4.6.0-preview4.19212.13\build\net461..\ref\netstandard2.0\System.Runtime.WindowsRuntime.dll未定义元数据CopyLocal的值。要使用此元数据,请通过指定%ReferencePath.CopyLocal对其进行限定,或确保此列表中的所有项都为此元数据定义了一个值

我在网上搜索了其他解决方案,但没有找到导致这种情况的答案

就实际错误而言,我假设我可以在编辑器中加载我的项目文件,并将%ReferencePath.CopyLocal附加到CopyLocal值为空的任何字段中,但情况似乎并非如此


我甚至不确定我需要查看哪个文件

我找到的唯一解决方案是创建一个新项目,该项目具有相同的文件结构和相似的引用,并将结构作为新的驱动器号导入

然后将旧项目文件替换为新项目文件,并再次手动更新驱动器号以指向正确的位置

在我看来,该错误实际上是错误的,并且是由于重新加载某些Nuget包而导致的损坏的bi产品


但是,这在a**中是一个非常痛苦的问题,所以如果有人有一个更好的解决方案,而不需要这样做,请随时发布

当我试图从DotNet 4.5项目迁移到DotNet 4.6.2项目时,问题出现了。当我从package.config迁移到PackageReference时,这个问题得到了解决


右键单击项目解决方案中的“引用”->选择“从package.config迁移到PackageReference”。

我遇到了类似的问题。我通过删除缓存文件如obj、bin和.vs文件来解决这个问题。希望这能帮助有类似问题的人

我在尝试使用Auth0 WinForm SDK制作MS Office插件时遇到了这个问题。我得到的错误是:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(226,9): error MSB4096: The item "C:\Users\XXXXXXX\.nuget\packages\system.runtime.windowsruntime\4.6.0\buildTransitive\net461\..\..\ref\netstandard2.0\System.Runtime.WindowsRuntime.dll" in item list "ReferencePath" does not define a value for metadata "CopyLocal".  In order to use this metadata, either qualify it by specifying %(ReferencePath.CopyLocal), or ensure that all items in this list define a value for this metadata.
为了解决这个问题,我必须从错误消息中编辑引用文件中的第226行。在我的情况下,该文件是:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets 
我改变了这一行:

<_CopyLocalFalseRefPaths Include="@(ReferencePath)" Condition="'%(CopyLocal)' == 'false'" />
为此:

<_CopyLocalFalseRefPaths Include="@(ReferencePath.CopyLocal)" Condition="'%(CopyLocal)' == 'false'" />

我从这里得到了这个解决方案:

这对您有帮助吗?Net 4.0要求安装Net 1.0、2.0、3.0和3.5。每个网络库都只有以前版本的更新。Net 4.6是一个累积版本,不需要较旧的版本。看起来错误消息正在查找Net 2.0。因此,我怀疑在从4.0迁移到4.6之后,您没有重建所有内容,因此仍然存在对NET2.0的引用。这并没有真正的帮助,根据那篇文章,我检查了我的SCPROJ,并且我没有在文件中找到任何引用路径的实例—我已经清理了所有内容并重建了解决方案中的所有投影内容。我最近还没有更新visual studio或.net。因此,我不明白是什么原因导致今天开始出现这种情况。不幸的是,我通过手动重建项目文件解决了这个问题,因此我不再有这个问题,因此我无法证明这是有效的。-如果有人通过此线程确认这对他们有效,我将很高兴地将其标记为正确answer@jasttim它确实有效,只是通过这种方式解决了相同的问题。同样的问题。发现此链接很有用: