2014-02-12 56 views
1

我一直得到以下兩個錯誤,同時建立任何新創建的項目,還是老的Windows應用商店項目與Visual Studio 2013的Windows 8.1商店應用MAKEPRI建立自己的錯誤

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. 

任何想法如何解決這個問題?

+1

它的錯誤SDK版本是8.0,而不是8.1。根本沒有任何暗示猜測爲什麼會發生這種情況。 –

+0

@HansPassant我看到了,但我不知道爲什麼VS2013開始這樣做,它使用舊的8.1項目,也是我剛剛創建的新項目。我可以搜索哪個方向的任何線索? –

回答

5

我必須設置VS2013工具>選項>項目和解決方案>生成和運行> MSBuild項目生成輸出的詳細程度來診斷

然後我意識到這

1>任務參數:MakePriExeFullPath = C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x64 \ MakePri.exe(TaskId:86)

因此,它使用了錯誤版本的SDK。然後和Tim Heuer交談,他告訴我 「開發人員告訴我,這是因爲SDK路徑已經搞亂了,並且可能是由VS2012命令提示符打開VS造成的。」

那是因爲我從powershell啓動VS2013,這是我的PowerShell配置文件中Visual Studio 2012命令提示符變量的設置。當我將其更改爲Vs2013時,everythign開始正常工作!

謝謝蒂姆和開發團隊!

0

當我調用我從VS2012開發人員命令提示符嘗試構建Windows 8.1應用程序所做的Gradle腳本時,我遇到了類似的問題。

我繼承的一個構建腳本包含一個vcvarsall.bat的調用,這讓我想知道這是否會對我有幫助。事實上也如此,所以我盡在其中做了一個小批處理腳本做到這一點,調用搖籃:

:: 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時運行的默認選項)運行我的構建版本。

+0

我剛剛發現的一個警告:顯然'vcvarsall.bat'會繼續附加到環境變量,導致它們增長和增長。幾十次運行後,我的批處理文件失敗,說輸入行太長。 – amacleod

相關問題