【问题标题】:MsBuild cannot resolve MsBuildMajorVersionMsBuild 无法解析 MsBuildMajorVersion
【发布时间】:2021-04-18 15:24:09
【问题描述】:

我有超过 100 个项目的 Visual Studio 解决方案。其中五个安装了 Fody 的 nuget 包(版本 6.0.3)。当我尝试构建解决方案时,出现以下错误:

Fody.6.3.0\build\Fody.targets(38,12):错误 MSB4086:数字 尝试对“$(MsBuildMajorVersion)”进行比较,结果为 "" 代替数字,条件为 "($(MsBuildMajorVersion)

在这个失败的构建之后,我尝试重复构建,并且在几次尝试(有时是一次,有时是五次)之后,构建成功完成。我试图重新安装所有 nuget 包,清除 nuget 缓存,重新安装 Visual Studio,设置 MSBUILDDISABLENODEREUSE 变量,但没有任何帮助。

Visual Studio 2019 的版本为 16.8.4,所有项目的 .NET Framework 版本为 4.8。

更新:

问题只存在于我的机器上。在同事的工作站上,一切正常。我发现在构建失败后应该重新启动 Visual Studio 并且构建过程成功的提示。这个技巧对我来说是一个足够的解决方法。

【问题讨论】:

  • 很可能是VS中的一些错误,但您应该发布项目文件
  • 您可以尝试通过github链接与我们分享其中一个错误项目,如果答案不起作用,我们可以更快地解决问题。
  • 在此处提出问题并确保您遵循模板中的所有步骤 github.com/Fody/Fody/issues/…
  • @Simon 我已经找到了解决方案。
  • 对于您在其下方发布的解决方案,我赞成您提出的问题。与此处发布的所有解决方案相反,这是为我解决它的技巧。

标签: .net visual-studio msbuild fody


【解决方案1】:

问题的解决方案是从packages.config 迁移到PackageReference。您可以在 Visual Studio 2019 中执行此操作:在 Solution Explorer 中展开您的项目,然后在 References 上单击鼠标右键并选择 Migrate packages.config to PackageReference...

【讨论】:

  • 嗨,我做了同样的事情,现在我得到了不同找不到 packages.config 文件错误确保此项目已安装 Microsoft.Bcl.Build 并且 packages.config 位于项目文件旁边跨度>
  • 为我修复了它,这是在一个较旧的项目上,并试图使用较新的 Visual Studio。也可以右键单击 packages.config 本身
【解决方案2】:

尝试在这五个项目上另外安装最新的Costura.Fody nuget 包,并尝试将Fody nuget 包更新到最新的6.3.0 版本。

然后然后重建您的项目以检查问题是否发生。

【讨论】:

    【解决方案3】:

    我能够通过添加到 .csproj 代码来恢复 nugets(刚刚从 VS 2017 中创建的项目复制)来解决这个问题。 将 packages.config 转换为 PackageReference 也对我有用,但在通过 msbuild 构建时会导致一些其他问题。

    需要在第一个 PropertyGroup 的末尾添加以下行

      <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
      <RestorePackages>true</RestorePackages>
    </PropertyGroup>
    

    以下行 EnsureNuGetPackageBuildImports 目标:

      <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
      <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    

    更多详情请见附件截图:

    【讨论】:

      【解决方案4】:

      我能够通过清理整个分辨率并尝试运行重建来解决此问题,然后成功重建项目。

      也许你应该试试。

      【讨论】:

        猜你喜欢
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        相关资源
        最近更新 更多