博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win10 uwp 使用 msbuild 命令行编译 UWP 程序
阅读量:5240 次
发布时间:2019-06-14

本文共 3587 字,大约阅读时间需要 11 分钟。

原文:

版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问。如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客。本文地址 https://blog.csdn.net/lindexi_gd/article/details/84252865

本文告诉大家如何使用 msbuild 命令行编译一个 UWP 程序

在有一些时候,如使用持续集成的时候就不能通过 VisualStudio 的方式编译 UWP 程序,需要使用命令行的方式编译。

尝试在本地从开始菜单打开开发命令提示符,或者从使用命令行调用本机的 VisualStudio 编译命令行

cmd> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\LaunchDevCmd.bat"

在 VisualStudio 在 C 盘安装就可以在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\ 找到 LunchDevCmd.bat 文件

运行之后可以看到下面界面

> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\LaunchDevCmd.bat"************************************************************************ Visual Studio 2017 Developer Command Prompt v15.8.5** Copyright (c) 2017 Microsoft Corporation**********************************************************************C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>

先进入项目所在的文件夹,也就是 sln 或 csproj 文件所在的文件夹,通过 msbuild 可以编译 sln 或编译 csproj 项目,推荐是编译 sln 的方式

在命令行跳转盘符,如从原来的C盘到 D 盘可以通过 盘符: 的方式

cmd> D:

这样就可以跳转到 D 盘,在进入指定的文件夹,可以输入 cd 文件夹 的方式

如果自己输入很容易就输入错误,推荐输入 cd 然后在资源管理器打开文件夹,将地址栏的文件夹拖进命令行

在编译 UWP 之前,很重要的是清理原有的文件,假如文件都是通过 git 管理的,当前也不存在没有被跟踪的文件,可以使用下面的代码删除无关的文件,需要注意的是通过这个方式必须保证证书文件是被跟踪的

cmd> git clean -xdf

清理之后可以通过下面的代码还原 UWP 项目,还原这一步非常重要

cmd> msbuild /t:restore

但是默认欢迎的 ARM 的项目,很多时候需要的是 x86 的项目,可以通过下面的方式还原

cmd> msbuild /t:restore /p:Platform=x86

如果要还原x64的程序,可以使用下面代码

cmd> msbuild /t:restore /p:Platform=x64

现在就可以进行编译了,通过下面的代码进行编译

cmd> msbuild /p:Platform=x86

现在就可以编译 DEBUG 下的 x86 程序了

如果需要编译同时输出,可以尝试下面的代码。下面的 AppxPackageDir 是填写 AppxPackageDir 的文件夹路径,请将这个值修改为自己需要的。

/p:AppxBundlePlatforms="x86|x64|ARM" /p:AppxPackageDir="D:\lindexi\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:platform="x86" /p:configuration="release" /p:VisualStudioVersion="15.0"

如果需要输出可以上传的包,需要先在本地链接到应用商店,然后执行下面代码

msbuild /t:restore /t:Publish /p:Configuration=Release /p:AppxPackageDir="D:\lindexi\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm"

如果是需要编译其他的解决方案,也就是当前的工作文件夹不在指定的项目文件夹,可以在 msbuild 后面添加解决方案的路径。注意这个路径需要使用 csproj 文件

msbuild "D:\lindexi\UWP\Foo.csproj" /t:restore /t:Publish /p:Configuration=Release /p:AppxPackageDir="D:\lindexi\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm"

如果是在服务器端编译,推荐先清理一下,然后再重新编译

清理的命令,请注意,如果需要带路径,对于清理命令需要加上 sln 文件

msbuild  /t:clean// 带路径msbuild "E:\lindexi\UWP\Foo.sln" /t:clean

还原 Nuget 包

msbuild /t:restore // 带路径msbuild "E:\lindexi\UWP\Foo.sln" /t:restore

重新编译

msbuild "D:\lindexi\UWP\Foo.csproj" /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir="D:\lindexi\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm"

例如在集成工具使用,实际大多数的集成工具默认都有配置 UWP 的编译,具体请看

在集成工具需要自己写编译的流程的时候,推荐下面的步骤

  1. git clean -xdf 保证清理
  2. msbuild /t:clean 如果有了 git 的清理,实际也就不需要使用 msbuild 的清理,只是防止有逗比上传了 obj 文件夹
  3. msbuild /t:restore 欢迎 nuget 包,注意添加自己的 nuget 网站,如果自己用了内部的 nuget 就需要自己添加
  4. msbuild /t:rebuild /t:Publish /p:Configuration=Release /p:AppxPackageDir="D:\lindexi\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm" 创建可以上传的文件,注意需要先链接应用商店,然后再将代码上传到 git 才可以创建出可以发到应用商店的文件。这时使用本地的测试证书也可以
  5. git clean 再次清理文件,如果自己的 AppxPackageDir 文件夹在工程所在的文件夹,这时就不要使用 git clean 了

本作品采用进行许可。欢迎转载、使用、重新发布,但务必保留文章署名(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我。

posted on
2018-12-25 01:08 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/10171865.html

你可能感兴趣的文章
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>
log4j.properties的作用
查看>>
游戏偶感
查看>>
Leetcode: Unique Binary Search Trees II
查看>>
C++ FFLIB 之FFDB: 使用 Mysql&Sqlite 实现CRUD
查看>>
Spring-hibernate整合
查看>>
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>