【问题标题】:MSBuild failing. Missing Release/WinRTXamlToolkitMSBuild 失败。缺少版本/WinRTXamlToolkit
【发布时间】:2017-10-17 16:48:53
【问题描述】:

尝试使用msbuild 构建Windows 8.1 商店应用程序,但出现错误。这是我与msbuild 的第一次战斗,我对文档的运气并不好,因为它似乎都利用了UWP 特定的东西。我收到的错误是

C:\git\adr\win8app\src\AppDataRoom.WinRT.Adr\AppDataRoom.WinRT.Adr.csproj" (默认目标) (1) -> (_GenerateAppxPackageRecipeFile 目标)-> 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' 做 es 不存在。

bin\x64\Release 文件夹中缺少与WinRTXamlToolkit 相关的所有其他错误

我正在运行的msbuild 命令是:

msbuild .\app.csproj /p:Configuration="Release" /p:Platform="x64

我知道WinRTXamlToolKit 是一个nuget 包,我可以看到发布文件夹中的dll,但是我该如何解决这个错误?我错过了什么?

【问题讨论】:

  • 更新:如果我将 WinRTXamlToolkit 文件夹从我的根目录下的“/packages”文件夹复制到“bin/x64/Release”,则构建成功,但有没有办法指向该文件夹而不是必须复制吗?
  • WinRTXamlToolKit的版本是多少?由于您正在构建 Windows 8.1 商店应用程序,因此您应该使用 1.6.1.3 版本。我已经创建了一个 Windows 8.1 商店应用程序,添加包 WinRTXamlToolKit 版本为 1.6.1.3,然后使用您的 MSBuild 命令行构建它,它工作正常。如果您使用的是该版本包,能否请您分享一些详细步骤,以便我可以重现此问题?

标签: c# visual-studio-2015 msbuild windows-runtime appx


【解决方案1】:

我最终找到了一个解决方案(尽管它仍然感觉有点笨拙)。我最终将所有内容都包装在了一个 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2020-09-14
    • 2016-05-15
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多