GetReferenceNearestTargetFramwork 任务意外失败.无效的框架 V4.0



我正在尝试在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>并运行重建。希望有帮助:(

最新更新