【问题标题】:GetReferenceNearestTargetFramwork task failed unexpectedly. Invalid framework V4.0GetReferenceNearestTargetFramwork 任务意外失败。无效的框架 V4.0
【发布时间】:2019-09-10 00:00:34
【问题描述】:

我正在尝试在 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>

【问题讨论】:

  • 编辑构建失败项目的项目文件,将&lt;TargetFrameworkVersion&gt;属性从V4.0 to v4.0更改为可以解决此问题。

标签: visual-studio-2010 msbuild nuget visual-studio-2019


【解决方案1】:

GetReferenceNearestTargetFrameworkTask 将在构建过程中被调用。

并查看Condition="'@(_ProjectReferenceTargetFrameworkPossibilities-&gt;Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != ''",当当前项目有project reference 到其他项目时,此任务将运行。

如果此任务执行,&lt;TargetFrameworkVersion&gt; 的值将从NuGet.Build.Tasks.dll 传递给GetReferenceNearestTargetFrameworkTask 类。并且无法识别V4.0,在VS2019中,framewrok版本以v开头,而不是V

所以解决方法是打开 xx.csproj 文件,将 &lt;TargetFrameworkVersion&gt;V4.0&lt;/TargetFrameworkVersion&gt; 更改为 &lt;TargetFrameworkVersion&gt;v4.0&lt;/TargetFrameworkVersion&gt; 并运行重建。希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 2021-12-04
    • 2018-01-02
    • 2017-09-20
    • 2013-05-25
    • 2017-07-23
    • 2016-06-22
    • 2017-07-23
    • 2021-02-20
    相关资源
    最近更新 更多