繁体   English   中英

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

[英]Building UWP app in command line (using MSBUILD)

我正在尝试从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.targets”。 此外,尝试在$(MSBuildExtensionsPath)的后备搜索路径中找到“ Microsoft \\ WindowsXaml \\ v15.0 \\ Microsoft.Windows.UI.Xaml.CSharp.targets”-“ 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自动检测:使用来自'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还原而不是Nuget还原来修复msbuild试图在“ C:\\ WINDOWS \\ system32 \\ config \\ systemprofile.nuget \\ packages \\”中查找软件包的情况

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

所以需要进一步调查

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

我之前曾尝试过,但发现它不完整,并且不具有构建Uwp工具的所有依赖关系,请查看此处有关问题的一些评论。

第一种解决方法:您可以从VS Community或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

较长的解决方法是,我设法安装了其他依赖项,但如果您要自动执行此安装,我相信这很麻烦, 本文的摘录

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

对于金块问题:

复制NuGet导入文件将完成tr,再次从装有VS2017的计算机上复制以下文件夹:C:\\ Program Files(x86)\\ Microsoft Visual Studio \\ 2017 \\ Professional \\ Common7 \\ IDE \\ CommonExtensions \\ Microsoft \\ NuGet在以下位置生成计算机:C:\\ Program Files(x86)\\ Microsoft Visual Studio \\ 2017 \\ BuildTools \\ Common7 \\ IDE \\ CommonExtensions \\ Microsoft \\ NuGet

注意:如果稍后遇到此问题,并且发现Microsoft在MSBuildTools安装程序中解决了与Uwp相关的问题,请在此答案中对此发表评论以进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM