首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MsBuild无法解析MsBuildMajorVersion

MsBuild无法解析MsBuildMajorVersion
EN

Stack Overflow用户
提问于 2021-01-13 15:27:13
回答 6查看 6.6K关注 0票数 22

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

Fody.6.3.0\build\Fody.targets(38,12):error MSB4086:尝试对"$(MsBuildMajorVersion)“进行数值比较,其计算结果为"”,而不是“条件下的数字"($(MsBuildMajorVersion) <16)。

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

VisualStudio2019的版本为16.8.4,所有项目都有4.8版的.NET框架。

更新:

这个问题只存在于我的机器上。在同事的工作站上,一切正常。我发现了这样的提示:在不成功的构建之后,应该重新启动Visual,并且生成过程是成功的。这个小贴士对我来说是个很好的解决办法。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2021-02-09 21:05:16

解决这个问题的方法是从packages.config迁移到PackageReference。您可以在VisualStudio2019中这样做:在解决方案资源管理器中展开项目,而不是单击引用上的鼠标右键并选择Migrate packages.config to PackageReference...

票数 19
EN

Stack Overflow用户

发布于 2021-01-14 03:13:14

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

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

票数 3
EN

Stack Overflow用户

发布于 2021-04-01 12:49:36

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

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

代码语言:javascript
运行
复制
  <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
  <RestorePackages>true</RestorePackages>
</PropertyGroup>

下面是EnsureNuGetPackageBuildImports目标行:

代码语言:javascript
运行
复制
  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

有关更多细节,请参见所附屏幕截图:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65704910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档