【问题标题】:Building UWP app in command line (using MSBUILD)在命令行中构建 UWP 应用程序(使用 MSBUILD)
【发布时间】:2018-06-12 19:20:20
【问题描述】:

我正在尝试从 Jenkins 设置的命令行构建 UWP 应用程序(目标为 16299)。 系统只有VS build tools 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.targets”是未找到。此外,尝试在 $(MSBuildExtensionsPath) 的后备搜索路径中找到“Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets” - “C:\Program Files (x86)\微软构建”。这些搜索路径在“C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe.Config”中定义。确认声明中的路径正确,并且该文件存在于磁盘上的任一搜索路径中。

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

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

nuget 4.6.0 也有同样的问题

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

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

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

2015 年 5 月 1 日更新

  • 按照答案进行操作。
  • 复制的 NuGet 文件夹
  • 复制了“WindowsXaml”文件夹。
  • 使用 MSbuild restore 而不是 Nuget restore 来修复 msbuild 尝试在“C:\WINDOWS\system32\config\systemprofile.nuget\packages\”中查找包的问题

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

所以需要进一步调查

【问题讨论】:

标签: jenkins uwp msbuild nuget-package-restore


【解决方案1】:

从您为 MSBuild 获得的目录路径中,我看到您可能安装了 MSBuildTools 安装程序,而不是社区、专业等版本。

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

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

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

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的sn-ps

从安装了 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)\微软视觉 Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\NuGet 到您的构建机器:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\CommonExtensions\Microsoft\NuGet

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

【讨论】:

  • 感谢您的帮助。除了上述步骤,我还复制了“WindowsXaml”文件夹。使用 MSbuild restore 而不是 Nuget restore 来修复 msbuild 尝试在“C:\WINDOWS\system32\config\systemprofile\.nuget\packages\”中查找包的问题
  • 使用当前版本的 vs_installer,当给出现有安装路径时,它将仅显示特定于安装类型的功能(对我而言,仅显示构建工具包,而不是 prof 或社区)。跨度>
  • 我建议如果您仍然有问题,请先卸载您拥有的以前的工具,然后从社区安装,专业...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
相关资源
最近更新 更多