我在 MSBuild 上收到以下错误:MSB3107
C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets (1001):引用“....\Contracts\Contracts.csproj”的指定项目引用元数据丢失或无效价值:项目
由于我在互联网上没有找到很多关于 MSB3107 的信息,我想我会在这里发布。
我通过删除对 Contracts.csproj 的所有引用并将它们与程序引用一起放回,解决了这个问题。这是一个简单的解决方法。
我遇到了这个问题,最终将 scproj ToolsVersion
(根Project
元素上的属性)设置为 3.5。将其更改为 4.0 解决了该问题。
查找并删除此行:
< Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
将 Xamarin Studio 解决方案转换为 Visual Studio 2017 for Mac 解决方案时出现此错误。
/Library/Frameworks/Mono.framework/Versions/5.0.1/lib/mono/msbuild/15.0/bin/Microsoft.Common.CurrentVersion.targets(5,5):错误MSB3107:指定的项目参考元数据参考“ {myproject}.csproj" 丢失或具有无效值:项目 (MSB3107) ({myproject})
我最终创建了一个全新的解决方案文件 (sln),然后是作为原生 iOS 库的新骨架 csproj 文件。我复制了这些类,并再次手动添加了引用。根本区别似乎是在 Project 标记下的第一个 PropertyGroup 部分的 .csproj 文件中删除这些 XML 条目。
<TargetFrameworkIdentifier>Xamarin.iOS</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ReleaseVersion>4.0</ReleaseVersion>
这可能是由于具有错误项目 GUID 的项目引用而发生的。如果来自版本控制系统的合并出错,则引用的 ID 可能会损坏。编辑 .csproj 文件以消除错误引用,然后从 Visual Studio 再次添加新引用可以解决此类问题。
删除项目 GUID 中的冗余大括号后,我们的解决方案中发生了错误。删除 .vs 文件夹(或运行 a git clean -fdx
)并重新启动 VisualStudio 后,错误不再出现。