在命令行中构建 UWP 应用程序(使用 MSBUILD)

Building UWP app in command line (using MSBUILD)

我正在尝试从 Jenkins 安装程序的命令行构建 UWP 应用程序(目标 16299)。 该系统只有 VS 构建工具 2017。 使用此命令构建

C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin\msbuild.exe" /t:Rebuild /p:Configuration=Release;AppxBundle=Always;AppxBundlePlatforms="x86\x64\ARM" /p:BuildAppxUploadPackageForUap=true SOLUTION_FILE.sln 

error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets" was not found. Also, tried to find "Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets" in the fallback search path(s) for $(MSBuildExtensionsPath) - "C:\Program Files (x86)\MSBuild" . These search paths are defined in "C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin\MSBuild.exe.Config". Confirm that the path in the declaration is correct, and that the file exists on disk in one of the search paths.

发现的另一个问题是 nuget 没有恢复任何包,所以将 nuget 更新到 4.4.1 然后我得到了错误

MSBuild auto-detection: using msbuild version '15.5.180.51428' from 'C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\bin'. Nothing to do. None of the projects in this solution specify any packages for NuGet to restore.

nuget 4.6.0 也有同样的问题

我尝试在项目文件中添加以下内容

<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle> </PropertyGroup>

同样的问题与 msbuild 和 nuget,有人在 Jenkins 中成功构建 UWP 吗?

更新 05-01-2015

通过所有这些更改,构建中不再有问题, 但是 appx 包不存在。可能必须为 x86/x64/ARM 创建单独的 appx,然后需要某种合并。

所以需要进一步调查

从您的 MSBuild 目录路径,我看到您可能安装了 MSBuildTools 安装程序,而不是社区版、专业版...

我之前尝试过,发现它不完整并且没有构建 Uwp 工具的所有依赖项,请查看一些关于问题的评论 here

第一个解决方法:您可以从 VS Community or Professional 安装 Uwp Workload,因为它具有所有依赖项,直到 Microsoft 修复了 BuildTools 安装程序中的问题。

奖励:如果你想 运行 从命令行安装程序,你可以像这样编写命令行:

vs_installer.exe --installPath "C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools" ^
--add Microsoft.VisualStudio.Workload.Universal ^
--add Microsoft.VisualStudio.Component.Windows10SDK.14393 ^
--add Microsoft.Component.MSBuild ^
--passive --wait --norestart

较长的解决方法,我设法安装了其他依赖项,但我相信如果您要自动执行此安装会有点麻烦,摘自此 article

Copy the Sdks folder from a machine that has VS2017 installed at: c:\Program Files(x86)\Visual Studio17\Professional\Build MSBuild\Sdks to your build machine at: c:\Program Files(x86)\Visual Studio17\Build Tools\MSBuild\Sdks

对于掘金问题:

Copying the NuGet import files will do the tr Again, from a machine with VS2017, copy the following folder: C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\CommonExtensions\Microsoft\NuGet to your build machine at: C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\Common7\IDE\CommonExtensions\Microsoft\NuGet

注意:如果您稍后通过此发现微软修复了MSBuildTools安装程序中与Uwp相关的问题,请在此答案中发表评论以更新它。