在Visual Studio 2015中无法构建通用应用程序

14

我无法在Visual Studio 2015中构建Windows通用应用程序。应用程序启动失败,并显示此JIT调试器窗口:

启动后立即发生 StackOverflow上有一个类似的问题,但我找不到,将继续寻找。其中一个可能的解决方法是切换到8.1并再次切换回来,但我无法针对任何通用应用程序进行8.1的目标设置。 调试程序会显示以下详细信息:

异常发生在0x7523DAD8 (KernelBase.dll) 中,APP_NAME.exe: 0x04242420 (parameters: 0x31415927, 0x558B0000, 0x004FF1D0)。

Unhandled exception at 0x00007FFF60BB1F28 (KernelBase.dll) in WWAHost.exe: 0x00000004: The system cannot open the file (parameters: 0xFFFFFFFF80004005, 0x0000000000000005).

WWAHost.exe has triggered a breakpoint.

我认为它与WinMD文件有关(具体来说是这一行)

<Error Condition="'$(_TargetPlatformMetadataPath)' == ''" Text="Could not find an existing platform WinMD location" />

但我不确定如何设置_TargetPlatformMetadataPath,也不知道它在哪里设置。

这是一张图片,你可以看到应用程序无法完全加载,而是显示了一个大大的X而不是任何实际内容: Application fails to load with a Win32/Kernel exception


这是我的尝试:

  • 重启和修复Visual Studio 2015
  • 删除、重启、重新安装Visual Studio 2015
  • 系统还原(卸载应用程序并重新安装Windows 10)
  • 清除并构建删除编译目录(bin)
  • 创建一个新项目
  • 下载一个项目/模板
  • 启用Windows 10开发人员模式
  • 没有NuGet包配置文件

我可以无任何问题地构建其他项目类型,似乎只有通用应用程序存在问题。我还应该注意到,如果项目是全新的或者我已经向应用程序UI添加了内容,这个问题也会出现。设计师也会随机失败,出现System.Runtime.Remoting.RemotingExceptionSystem.Runtime.InteropServices.COMException

我无法在任何地方找到真正相似的问题。我可以选择通用应用程序作为项目类型,但如果我点击编译,无论如何都会失败。在这里我已经筋疲力尽了,我愿意听取任何建议,谢谢大家。


你的应用程序是否确实针对Windows 10进行优化?因为当试图在Windows 10上运行Windows 8应用时,会出现相同的错误。 - Glen Thomas
@GlenThomas 哇,我没想到要测试那个。两个应用程序都能启动,但在启动后几乎立即关闭,可能是在执行任何代码之前的闪屏界面之后。 - Matt
看起来Intellitrace出了问题。我认为修复它将解决你的问题。 - Glen Thomas
@rubenvb 我实际上在这台机器上除了Windows Defender之外没有运行任何杀毒软件,但关闭它似乎没有影响。 - Matt
尝试打开微软的一个UWP示例项目。 Github链接:https://github.com/Microsoft/Windows-universal-samples ZIP链接:https://github.com/Microsoft/Windows-universal-samples/archive/master.zip如README所述,请确保您拥有适用于Windows 10的Windows软件开发工具包(SDK)(或者也许可以从头开始并遵循README进行设置)。 - C. McCoy IV
显示剩余33条评论
1个回答

3
如果没人介意的话,我会像回答一样发布它(对于其他人可能有用)
在 Windows 10 版本 Build 14295 及以下版本中存在一个 bug
如果你在“设置 - 系统 - 存储”中将默认保存位置从 C 盘更改为其他磁盘,则将无法在 Visual Studio 中调试 UWP 应用程序。
升级系统到最新版本应该可以解决这个问题。

不知道这是否对提问者有帮助,但它解决了我遇到的问题,所以点个赞。谢谢。 - user5999614
我只是想说我看到了你的答案。在继续之前,我正在等待进入“内部计划”的批准,但知道当我测试它时,如果它有效,我会将其标记为已回答。 - Matt

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