Windows 8.1商店应用程序MAKEPRI构建错误

时间:2014-02-12 07:42:31

标签: 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 DTD/Schema.  c:\Temp\App4\App4\MakePRI   App4

将MSBuild项目构建输出详细程度转换为Diagnostic我看到以下内容

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.

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

我必须设置VS2013工具>选项>项目和解决方案>构建并运行> MSBuild项目构建输出详细程度到Diagnostic

然后我意识到了这个

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

所以它使用的是错误版本的SDK。然后跟蒂姆豪雅说话,他告诉我 “开发人员告诉我这是因为SDK路径搞砸了,如果你从VS2012命令提示符打开VS,可能会导致它。”

就是因为我从powershell启动了VS2013,这是我的powershell配置文件中设置Visual Studio 2012命令提示符变量。当我把它改为Vs2013时,每个标志都开始正常工作了!

感谢Tim和开发团队!

答案 1 :(得分:0)

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

我继承的一个构建脚本包含vcvarsall.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

我的build.gradle内部是一个调用MSBuild.exe的任务。

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