我正在尝试在VS2019中构建一个VS2010项目。我也在VS2017中收到此错误消息。
该项目不会生成,因为它似乎无法将 MSbuild 4.0 识别为有效。
这是错误:
The "GetReferenceNearestTargetFrameworkTask" task failed unexpectedly.
System.ArgumentException: Invalid framework version 'V4.0'.
at NuGet.Frameworks.NuGetFramework.ParseFrameworkName(String frameworkName, IFrameworkNameProvider mappings)
at NuGet.Frameworks.NuGetFramework.Parse(String folderName, IFrameworkNameProvider mappings)
at
NuGet.Build.Tasks.GetReferenceNearestTargetFrameworkTask.TryParseFramework(String framework, String errorMessage, MSBuildLogger logger, NuGetFramework&nugetFramework(
以下是失败的任务:
<GetReferenceNearestTargetFrameworkTask AnnotatedProjectReferences="@(_ProjectReferenceTargetFrameworkPossibilities)"
CurrentProjectTargetFramework="$(ReferringTargetFrameworkForProjectReferences)"
CurrentProjectName="$(MSBuildProjectName)"
FallbackTargetFrameworks="$(AssetTargetFallback)"
Condition="'@(_ProjectReferenceTargetFrameworkPossibilities->Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != ''">
<Output ItemName="AnnotatedProjects" TaskParameter="AssignedProjects" />
</GetReferenceNearestTargetFrameworkTask>
GetReferenceNearestTargetFrameworkTask
将在构建过程中调用。
并查看Condition="'@(_ProjectReferenceTargetFrameworkPossibilities->Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != ''"
,当当前项目已project reference
到其他项目时,此任务将运行。
如果此任务执行,则<TargetFrameworkVersion>
的值将从NuGet.Build.Tasks.dll
传递给GetReferenceNearestTargetFrameworkTask
类。而且它无法识别V4.0
,在VS2019中,framewrok版本以v
开头而不是V
。
因此,解决方法是打开 xx.csproj 文件,并将<TargetFrameworkVersion>V4.0</TargetFrameworkVersion>
更改为<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
并运行重建。希望有帮助:(