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

时间:2018-01-03 05:55:47

标签: jenkins uwp msbuild nuget-package-restore

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

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

错误MSB4226:导入的项目" C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ WindowsXaml \ v15.0 \ Microsoft.Windows.UI.Xaml.CSharp。目标"没找到。此外,试图找到" Microsoft \ WindowsXaml \ v15.0 \ Microsoft.Windows.UI.Xaml.CSharp.targets"在$(MSBuildExtensionsPath) - " C:\ Program Files(x86)\ MSBuild"的后备搜索路径中。这些搜索路径在" C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin \ MSBuild.exe.Config"中定义。确认声明中的路径是正确的,并且该文件存在于其中一个搜索路径的磁盘上。

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

  

MSBuild自动检测:使用msbuild版本' 15.5.180.51428'来自' C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ bin'。   没事做。此解决方案中的所有项目都没有指定任何要恢复的NuGet包。

与nuget 4.6.0相同的问题

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

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

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

更新05-01-2015

  • 根据答案按照说明进行操作。
  • 复制NuGet文件夹
  • 复制&#34; WindowsXaml&#34;文件夹中。
  • 使用MSbuild还原而不是Nuget还原来修复msbuild尝试在&#34; C:\ WINDOWS \ system32 \ config \ systemprofile.nuget \ packages \&#34;中找到包。

所有这些变化在构建中没有更多问题, 但appx包不存在。可能是x86 / x64 / ARM的个人appx必须创建,然后需要某种合并。

所以需要进一步调查

1 个答案:

答案 0 :(得分:0)

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

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

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

Bonus:如果要从命令行运行安装程序,可以像这样编写命令行:

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

更长的解决方法,我设法安装了其他依赖项,但我相信如果你自动化这个安装会有点麻烦,来自article

的代码片段
  

从安装了VS2017的计算机上复制Sdks文件夹:   c:\ Program Files(x86)\ Visual Studio \ 2017 \ Professional \ Build MSBuild \ Sdks   到您的构建机器:   c:\ Program Files(x86)\ Visual Studio \ 2017 \ Build Tools \ MSBuild \ Sdks

对于掘金问题:

  

复制NuGet导入文件将从机器再次执行tr   使用VS2017,复制以下文件夹:C:\ Program Files   (x86)\ Microsoft Visual   工作室\ 2017年\专业\ Common7 \ IDE \ CommonExtensions \微软\的NuGet   到你的构建机器:C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017 \编译工具\ Common7 \ IDE \ CommonExtensions \微软\的NuGet

注意:如果您稍后再来,并发现Microsoft修复了MSBuildTools安装程序中与Uwp相关的问题,请在此答案中对其进行评论以进行更新。