尝试使用Windows 8.1
构建msbuild
商店应用,但收到错误消息。这是我与msbuild
的第一次战斗,我对文档没有太多运气,因为它似乎都利用了UWP
具体的东西。我得到的错误是
C:\ git \ adr \ win8app \ src \ AppDataRoom.WinRT.Adr \ AppDataRoom.WinRT.Adr.csproj“(默认目标)(1) - > (_GenerateAppxPackageRecipeFile target) - > C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ AppxPackage \ Microsoft.AppXPackage.Targets(2156,5):错误 APPX0702:有效载荷文件'C:\ app \ bin \ x64 \ Release \ WinRTXamlToolkit \ WinRTXamlToolkit.xr.xml'做 不存在。
WinRTXamlToolkit
文件夹内部遗漏bin\x64\Release
所有相关的其他25个错误
我正在运行的msbuild
命令是:
msbuild .\app.csproj /p:Configuration="Release" /p:Platform="x64
我理解WinRTXamlToolKit
是一个nuget
包,我可以在release文件夹中看到dll,但是如何解决这个错误呢?我错过了什么?
答案 0 :(得分:1)
我最终找到了一个解决方案(虽然它仍然感觉有点hacky)。我最终将所有内容都包含在一个PowerShell脚本中。该脚本首先恢复项目nuget包,以防万一它由于某种原因不存在。然后脚本将WinRTXamlToolKit文件夹从包复制到bin / x64 / Release文件夹中,然后运行MSBuild命令,现在所有内容都可以正确构建。这是脚本的样子(我不经常写powershell脚本,所以我的约定可能不是最好的)
#create some alias
$nugetPath = $sourceControlRoot + ".nuget/nuget.exe";
$nugetPackagesPath = $sourceControlRoot + "/packages/";
$projectPath = $sourceControlRoot + "/TestingProject/"
Set-Alias nuget $nugetPath
#Nuget Restore
$solutionPath = $sourceControlRoot + "/TestingProject.sln"
nuget restore $solutionPath
#To Help MSBuild we need to copy the WinRTXamlToolkit into the bin/Release folders
$winRtXamlToolkitPath = $nugetPackagesPath + "WinRTXamlToolkit.1.6.1.3/lib/netcore451/WinRTXamlToolkit"
$copyOutput64 = $projectPath + "bin/x64/Release/WinRTXamlToolkit"
$copyOutput86 = $projectPath + "bin/x86/Release/WinRTXamlToolkit"
$testPath = $copyOutput64
if (!(Test-Path $testPath )) {
Copy-Item $winRtXamlToolkitPath $copyOutput64 -recurse
Copy-Item $winRtXamlToolkitPath $copyOutput86 -recurse
Write-Output "WinRTXamlToolkit copied into bin folders"
}
#build the project
$buildPath = $projectPath + "TestingProject.csproj"
msbuild $buildPath /p:Configuration="Release" /p:Platform="x64"