VS2017自动检测MSBuild版本时,WPF项目使用的是MSBuild/v14而非v15。

7

我们正在逐步迁移到VS2017,大部分项目都可以在很少干扰的情况下完成。今天开始将一个WPF项目从VS2015迁移至VS2017。当我构建解决方案时,会出现以下警告:

MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.

我在谷歌上搜索了这个问题,但似乎没有其他人遇到。我不知道是什么原因导致的。.NET目标版本是4.5.1,但将其更改为4.6.2没有任何区别。清理或删除bin和obj目录也没有用。谁能提供一些线索呢?


1
你的项目的ToolsVersion属性有什么值? - UserName
是的,那可能就是它了。这是14.0版本。 - Paul Sinnema
尝试更改为15.0。 - UserName
改成了15,但仍然收到警告。 - Paul Sinnema
似乎是NuGet引起的: 1>任务“Exec”(TaskId:20) 1>任务参数:WorkingDirectory = bin \ Debug \(TaskId:20) 1>任务参数:Command =“C:\ Projects \ P2G \ P2G \ Sources \ .nuget \ nuget.exe”restore“C:\ Projects \ P2G \ P2G \ Sources \ wur.p2g.sln”(TaskId:20) 1>“C:\ Projects \ P2G \ P2G \ Sources \ .nuget \ nuget.exe”restore“C:\ Projects \ P2G \ P2G \ Sources \ wur.p2g.sln”(TaskId:20) 1>MSBuild自动检测:使用来自'C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin'的msbuild版本'14.0'。 (TaskId:20) 1>packages.config中列出的所有软件包都已安装。 (TaskId:20) - Paul Sinnema
显示剩余2条评论
2个回答

6

在将包含类库的解决方案从VS2017迁移到VS2019后,我在使用命令行构建时遇到了这个问题。我发现我的PATH环境变量中有VS2017版本的MSBuild - C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin。将该路径从环境变量中移除并重新打开控制台解决了该问题。


2
VS2017的MSBuild自动检测在WPF项目中选择了MSBuild/v14而不是v15。
您可以尝试将.nuget文件夹中的nuget.exe版本更新到4.0及以上。
Visual Studio 2017附带了NuGet 4.0,而Visual Studio 2015目前不支持NuGet 4.0包管理器扩展(Visual Studio 2015附带的是NuGet 3.4.4,同时也可以作为显式下载提供NuGet 3.5.0)。
根据您的评论,似乎旧的nuget.exe无法检测到MSBuild版本15.0,请尝试将.nuget文件夹中的nuget.exe更新到4.0及以上。
此外,我发现您的解决方案仍然使用旧的包恢复方法“MSBuild集成恢复”,这是最初的包恢复实现,虽然在许多场景中仍然有效,但它并不能涵盖其他两种方法所解决的全部情况。

自动包恢复是NuGet团队在Visual Studio中推荐的包恢复方法。您可以转换为使用自动包恢复。请查看以下主题以获取详细信息:

Nuget:从“启用包恢复”切换到“自动包恢复”

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接