新建UWP UnitTest App崩溃,无法更新Microsoft.NET.Test.Sdk至15.7.2
UWP Unit Test App白屏崩溃 + Microsoft.NET.Test.Sdk更新失败的解决方案
你在VS2017 15.7.2里遇到的这两个问题确实是关联的——UWP单元测试项目对测试SDK的版本有严格的绑定要求,版本不匹配不仅会导致SDK更新失败,还会触发测试启动时的白屏崩溃。下面是我整理的分步修复方案:
一、解决Microsoft.NET.Test.Sdk更新失败问题
你看到的错误提示Cannot modify an evaluated object originating in an imported file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.Common.targets",是因为VS2017内置的UWP MSBuild目标文件锁死了测试SDK的版本,直接通过NuGet管理器更新会触发冲突。手动修改项目文件就能解决:
- 右键你的UWP单元测试项目,选择卸载项目,接着右键已卸载的项目,点击编辑[你的项目名].csproj
- 在打开的XML文件里,找到
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="xxx" />这一行,把版本号改成15.7.2(和你的VS版本完全对齐) - 检查
<PropertyGroup>节点里是否有<TestProjectType>UnitTest</TestProjectType>,如果没有就加上这一行,确保测试项目类型正确配置 - 保存文件后重新加载项目,再执行NuGet包还原,这次应该能成功更新SDK了
二、修复测试启动白屏崩溃问题
SDK版本不匹配是核心诱因,修复SDK后再做以下验证和清理:
- 打开项目属性的应用选项卡,确认项目的目标版本和最低版本与你本地安装的Windows SDK版本一致(版本不匹配也会导致启动崩溃)
- 执行生成→清理解决方案,然后手动删除项目目录下的
bin和obj文件夹,彻底清理旧的编译产物 - 回到测试资源管理器,右键所有测试选择运行选定的测试,观察是否还会出现白屏崩溃
- 如果问题仍存在,尝试重置VS的测试相关配置:以管理员身份打开命令提示符,运行
devenv /resetuserdata,重置完成后重启VS再测试
三、避坑提醒
VS2017的UWP单元测试对版本兼容性要求极高,尽量保证VS版本、Windows SDK版本、Microsoft.NET.Test.Sdk版本三者完全匹配,不要跨版本更新测试SDK。如果需要使用更高版本的测试工具链,建议直接升级VS到对应的版本(比如15.9.x系列),旧版VS的内置MSBuild逻辑不兼容新的测试SDK。
内容的提问来源于stack exchange,提问作者Sebastian Zolg
相关产品推荐
相关产品推荐

