关于 tfsbuild:MSBuild 错误 MSB3107

MSBuild error MSB3107

我在 MSBuild 上收到以下错误:MSB3107

C:\\\\Windows\\\\Microsoft.NET\\\\Framework64\\\\v3.5\\\\Microsoft.Common.targets (1001):为引用"....\\\\Contracts\\"指定的项目引用元数据Contracts.csproj" 丢失或具有无效值:Project

由于我在互联网上没有找到很多关于 MSB3107 的信息,所以我想我会在这里发布。


我解决了这个问题,删除了对 Contracts.csproj 的所有引用并将它们与程序引用一起放回去。这很容易解决。


在删除项目 GUID 中的冗余大括号后,我们的解决方案中出现错误。删除 .vs 文件夹(或运行 git clean -fdx)并重新启动 VisualStudio 后,错误不再出现。


这可能是由于项目引用的项目 GUID 错误而发生的。如果来自版本控制系统的合并出错,则引用的 ID 可能会损坏。编辑 .csproj 文件以消除错误引用,然后从 Visual Studio 再次添加新引用可以解决此类问题。


将 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 库的新Backbone csproj 文件。我复制了这些类,并再次手动添加了引用。根本区别似乎是在 Project 标签下的第一个 PropertyGroup 部分的 .csproj 文件中删除这些 XML 条目。

1
2
3
4
5
<TargetFrameworkIdentifier>Xamarin.iOS</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ReleaseVersion>4.0</ReleaseVersion>


找到并删除这一行:

< Import Project="$(MSBuildExtensionsPath)\\\\\\\\$(MSBuildToolsVersion)\\\\\\\\Microsoft.Common.props" Condition="Exists(\\'$(MSBuildExtensionsPath)\\\\\\\\$( MSBuildToolsVersion)\\\\\\\\Microsoft.Common.props\\')" />


我遇到了这个问题,结果是 scproj 的 ToolsVersion(根 Project 元素上的属性)设置为 3.5。将其更改为 4.0 解决了该问题。