GetReferenceNearestTargetFramwork 任务意外失败。无效框架 V4.0
GetReferenceNearestTargetFramwork task failed unexpectedly. Invalid framework 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(字符串框架、字符串错误消息、MSBuildLogger 记录器、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
class。而且它无法识别V4.0
,在VS2019中,framewrok版本以v
开头,而不是V
。
所以 解决方法 是打开 xx.csproj 文件,并将 <TargetFrameworkVersion>V4.0</TargetFrameworkVersion>
更改为 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
和 运行重建。希望对您有所帮助:)
我正在尝试在 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(字符串框架、字符串错误消息、MSBuildLogger 记录器、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
class。而且它无法识别V4.0
,在VS2019中,framewrok版本以v
开头,而不是V
。
所以 解决方法 是打开 xx.csproj 文件,并将 <TargetFrameworkVersion>V4.0</TargetFrameworkVersion>
更改为 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
和 运行重建。希望对您有所帮助:)