Windows store apps Windows 8.1应用商店应用程序MAKEPRI生成错误

Windows store apps Windows 8.1应用商店应用程序MAKEPRI生成错误,windows-store-apps,visual-studio-2013,Windows Store Apps,Visual Studio 2013,在使用Visual Studio 2013构建任何新创建的项目或旧的Windows应用商店项目时,我经常遇到以下两个错误 Error 1 Initializing Indexer c:\Temp\App4\App4\MakePri App4 Error 2 Schema Validation Failed. The attribute 'targetOsVersion' on the element 'resources' is not defined in the D

在使用Visual Studio 2013构建任何新创建的项目或旧的Windows应用商店项目时,我经常遇到以下两个错误

Error   1   Initializing Indexer    c:\Temp\App4\App4\MakePri   App4
Error   2   Schema Validation Failed. The attribute 'targetOsVersion' on the element 'resources' is not defined in the DTD/Schema.  c:\Temp\App4\App4\MakePRI   App4
将MSBuild项目生成输出详细信息转换为诊断,我将看到以下内容

2>Using "GenerateProjectPriFile" task from assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage\Microsoft.Build.AppxPackage.dll".
2>Task "GenerateProjectPriFile" (TaskId:159)
2>  Task Parameter:MakePriExeFullPath=C:\Program Files (x86)\Windows Kits\8.0\bin\x64\MakePri.exe (TaskId:159)
2>  Task Parameter:PriConfigXmlPath=obj\Debug\priconfig.xml (TaskId:159)
2>  Task Parameter:
2>      IndexFilesForQualifiersCollection=
2>          obj\Debug\layout.resfiles
2>          obj\Debug\resources.resfiles (TaskId:159)
2>  Task Parameter:ProjectPriIndexName=b3cbc7ac-25e8-4dda-a091-231a51997222 (TaskId:159)
2>  Task Parameter:InsertReverseMap=False (TaskId:159)
2>  Task Parameter:ProjectDirectory=C:\@Personal\Projects\Squeezy2\Squeezy\Squeezy\ (TaskId:159)
2>  Task Parameter:OutputFileName=C:\@Personal\Projects\Squeezy2\Squeezy\Squeezy\bin\Debug\resources.pri (TaskId:159)
2>  Task Parameter:QualifiersPath=obj\Debug\qualifiers.txt (TaskId:159)
2>  Task Parameter:IntermediateExtension=.intermediate (TaskId:159)
2>  Task Parameter:MultipleQualifiersPerDimensionFoundPath=obj\Debug\MultipleQualifiersPerDimensionFound.txt (TaskId:159)
2>  C:\Program Files (x86)\Windows Kits\8.0\bin\x64\MakePri.exe New -ProjectRoot "C:\@Personal\Projects\Squeezy2\Squeezy\Squeezy\\" -ConfigXml obj\Debug\priconfig.xml -OutputFile "C:\@Personal\Projects\Squeezy2\Squeezy\Squeezy\bin\Debug\resources.pri" -IndexName b3cbc7ac-25e8-4dda-a091-231a51997222 -Verbose -Overwrite   (TaskId:159)
2>  Option Verbose specified (TaskId:159)
2>  Option Overwrite specified (TaskId:159)
2>MakePri : error 0x80004005: Initializing Indexer
2>MakePRI : error 0xdef00501: Schema Validation Failed. The attribute 'targetOsVersion' on the element 'resources' is not defined in the DTD/Schema.

知道如何修复吗?

我必须将VS2013工具>选项>项目和解决方案>生成和运行>MSBuild项目生成输出详细信息设置为诊断

然后我意识到了这一点

1> 任务参数:MakePriexFullPath=C:\Program Files(x86)\Windows Kits\8.0\bin\x64\MakePri.exe(任务ID:86)

所以它使用了错误版本的SDK。然后和Tim Heuer谈过他告诉我的 “开发人员告诉我,这是因为SDK路径混乱,如果您从VS2012命令提示符打开VS,可能会导致SDK路径混乱。”

这是因为我从powershell启动了VS2013,这是我的powershell配置文件中的设置Visual Studio 2012命令提示符变量。当我把它改成Vs2013时,所有的信号又开始正常工作了


谢谢Tim和devs团队

我必须将VS2013工具>选项>项目和解决方案>生成和运行>MSBuild项目生成输出详细信息设置为诊断

然后我意识到了这一点

1> 任务参数:MakePriexFullPath=C:\Program Files(x86)\Windows Kits\8.0\bin\x64\MakePri.exe(任务ID:86)

所以它使用了错误版本的SDK。然后和Tim Heuer谈过他告诉我的 “开发人员告诉我,这是因为SDK路径混乱,如果您从VS2012命令提示符打开VS,可能会导致SDK路径混乱。”

这是因为我从powershell启动了VS2013,这是我的powershell配置文件中的设置Visual Studio 2012命令提示符变量。当我把它改成Vs2013时,所有的信号又开始正常工作了


谢谢Tim和devs团队

当我调用从VS2012开发者命令提示符创建的Gradle脚本试图构建Windows 8.1应用程序时,我遇到了类似的问题

我继承的一个构建脚本包含对
vcvvarsall.bat
的调用,这让我怀疑这是否对我有帮助。事实上它做到了,所以我制作了一个小批量脚本来实现这一点,并在一个脚本中调用Gradle:

:: build_winstore.bat - Build for Windows Store.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
scripts\build\gradlew.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
在my build.gradle中有一个调用
MSBuild.exe
的任务


它可能有点笨重,但它允许我从2012开发者命令提示符运行构建(这是我键入
cmd
时运行的默认设置)。

当我调用从VS2012开发者命令提示符创建的Gradle脚本试图构建Windows 8.1应用程序时,我遇到了类似的问题

我继承的一个构建脚本包含对
vcvvarsall.bat
的调用,这让我怀疑这是否对我有帮助。事实上它做到了,所以我制作了一个小批量脚本来实现这一点,并在一个脚本中调用Gradle:

:: build_winstore.bat - Build for Windows Store.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
scripts\build\gradlew.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
在my build.gradle中有一个调用
MSBuild.exe
的任务


它可能有点笨重,但它允许我从2012开发者命令提示符运行我的构建(这是我键入
cmd
时运行的默认设置)。

它是用错误的SDK版本构建的,8.0而不是8.1。你没有留下任何线索来猜测为什么会发生这种情况。@HansPassant我看到了,但我不知道为什么VS2013开始这样做,它在旧的8.1项目中做到了这一点,也在我刚刚创建的新项目中做到了这一点。我可以从哪个方向搜索到线索?它使用了错误的SDK版本,8.0而不是8.1。你没有留下任何线索来猜测为什么会发生这种情况。@HansPassant我看到了,但我不知道为什么VS2013开始这样做,它在旧的8.1项目中做到了这一点,也在我刚刚创建的新项目中做到了这一点。有什么线索可以让我朝哪个方向搜索吗?我刚刚发现了一个警告:显然,
vcvarsall.bat
会不断追加环境变量,导致它们不断增长。经过几十次运行后,我的批处理文件失败,因为输入行太长。我刚刚发现一个警告:显然
vcvvarsall.bat
将继续附加到环境变量,导致它们不断增长。经过几十次运行后,我的批处理文件失败,因为输入行太长。