IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> WinRT-Metro -> UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包 -> 正文阅读

[WinRT-Metro]UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包

UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包 背景
项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build。 公司要求用Jenkins 来做,别笑话我,之前还真不晓得这个东西。
会的同学请看一下指出错误,不会的同学请先自行脑补,我们一步一步的来。
首先我们准备2个安装包,Jenkins,NuGet 都下载最新的好了。

1. 安装Jenkins,下一步下一步。安装好了会自动浏览器跳转到http://localhost:8080/ 如下图

按照提示去C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword文件中把一串GUID拷进去,然后点Continue,等待。

第一次玩的同学就选默认让它安装建议的插件好了。再次等待。。。完成之后是创建账号,小伙伴记住自己的账号哦。我在弄的过程因为忘记账号了。。还重新安装过。。
如果要重装,记得卸载之后删掉C:\Program Files (x86)\Jenkins 这个目录
 

填完之后就开始使用吧。。gogo
新建一个job

选择第一个然后填个名字,点ok

到构建中,创建一个Execute Windows batch command

 将下面代码拷进去

D:\Jenkins_Test\Tools\nuget.exe restore "D:\Jenkins_Test\Projects\App1\App1.sln" -ConfigFile "C:\Users\xxxx\AppData\Roaming\NuGet\NuGet.Config" -NoCache

这里我讲一下,我们事先在D盘创建了Jenkins_Test的文件夹,它下面的Tools文件夹是存放前面下载的nuget.exe。
restore 是 nuget 的一个命令,就是说把你项目D:\Jenkins_Test\Projects\App1\App1.sln需要的app package都按需下载下来。跟你用VS 编译项目的时候提示的restoring package是一样的。
后面的-ConfigFile 是指定configFlie,如果不写的话。默认是%AppData%\NuGet\NuGet.config is used. 我们这里使用的是你登陆windows 的xxxx账号下面的这个文件.
具体这些命令是干什么的。。还有哪些其他命令,请查看 nuget.exe-cli-reference. 记得改掉xxxx为你自己的账号。

接下来我们需要创建一个Windows powershell。这需要去下载powershell for jenkins的插件。
保存之后 点击Jenkins 回到主页面。

点击 系统管理,然后在右边选择点击 管理插件,在可选插件 项目下搜索Powershell,勾选点击直接安装。

安装完毕之后我们回到主页,再次点击 刚才新建的Test1 项目,进入之后点击配置。
这次在构建中,我们选择 Windows PowerShell。
拷贝下面code进去。

# Path to Msbuild tool
# $msbuild = "[Path to MsBuild.exe. See below for reference]"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe"
set-alias msbuild $msbuild
# solution settings
# $sln_name = "[Path to Solution File. See below for reference]"
$sln_name = "D:\Jenkins_Test\Projects\App1\App1.sln"
$vs_config = "Release" 
$vs_platfom = "ARM"
# call the build method
Write-Host "Building solution`n" -foregroundcolor Green
msbuild $sln_name /t:Build /p:Configuration=$vs_config /p:Platform=$vs_platfom /v:q /nologo

填好之后我们就可以保存,返回之后,点击 立刻构建。。如下图。。等待build结果。

这里我们将会遇到第一个坑,我加粗以表示重要。
build失败,我们点击下前面红色的球球。。查看日志。

CSC : error CS0006: Metadata file 'C:\windows\system32\config\systemprofile\.nuget\packages\System.ComponentModel\4.0.0\ref\netcore50\System.ComponentModel.dll' could not be found [D:\Jenkins_Test\Projects\App1\ClassLibrary1\ClassLibrary1.csproj]

坑1
可以看到的是nuget store 是成功了,但是在build的时候它跑去找C:\windows\system32\config\systemprofile\.nuget\packages\ 下面的的packpage了,查看本地这个文件夹,根本就没有.nuget。
而.nuget其实是在我们当前user下面的 C:\Users\xxxx
大量查看网上都没有查到有用的信息,而当我查看 Jenkins 系统管理-系统信息的时候我发现 Jenkins 默认的home就是在C:\windows\system32\config\systemprofile这个下面,而且这是我们装系统的时候默认本地账号的位置。
想到这里我想第一件要做的事就是把home给改成C:\Users\xxxx。
最后我通过修改Jenkins  服务通过这个坑。。
进入service,找到jenkins的服务。点击属性-登陆  可以看到默认是本地账号

那么我们需要修改为 你当前系统登陆的账号。点击此账号,进去浏览,搜索到你当前登陆的账号然后点击确定,记得重启服务。

再次查看jenkins 系统信息,已经看到home更改了。。去点击 立即创建。。。等待build完成。。
可以看到球球变成了蓝色,编译成功了。
这样我们就完成了自动编译。。这个使用场景我想应该是在代码服务器check in的时候自动做编译来检查 代码是否正确与否。
当然肯定需要写一些触发,本文没有做更多研究,有兴趣的同学可以自己研究交流。
下面我们要做App 包,就是那样给测试使用以及上传商店的包。
我们新建另一个Job,比如test2.
同test1一样到构建中,创建一个Execute Windows batch command
 将下面代码拷进去

D:\Jenkins_Test\Tools\nuget.exe restore "D:\Jenkins_Test\Projects\App1\App1.sln" -ConfigFile "C:\Users\xxxx\AppData\Roaming\NuGet\NuGet.Config" -NoCache

再创建Windows PowerShell

# Path to Msbuild tool
# $msbuild = "[Path to MsBuild.exe. See below for reference]"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe"
set-alias msbuild $msbuild
# solution settings
# $sln_name = "[Path to Solution File. See below for reference]"
$sln_name = "D:\Jenkins_Test\Projects\App1\App1\App1.csproj"
# call the build method
Write-Host "Building solution`n" -foregroundcolor Green
msbuild $sln_name /target:Clean /target:Rebuild /target:Publish /p:Configuration=Release /p:AppxPackageDir="D:\Jenkins_Test\AppxPackages\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:AppxBundlePlatforms="x86|x64|arm"

值得注意的是:
1.记得先用vs 把项目跟商店里面的项链接到一起,不链接起来的话,你做出来的包也没法上传。。

坑2 sln_name 这里要注意 必须是启动项.csproj而且是.sln
保存之后,立即构建,完成之后你就可以在D:\Jenkins_Test\AppxPackages\ 文件夹下发现你的App 包了。。

坑3
因为项目中引用的一个package 是不支持Any CPU的,所以我们在项目里面删除了AnyCPU,注意我们删除了sln,以及各个子项目里面的AnyCPU。

删除了之后我们再进行构建,毫无疑问报错了。

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(724,5): error : The OutputPath property is not set for project 'ClassLibrary1.csproj'.  Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='Debug'  Platform='AnyCPU'.  You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project. [D:\Jenkins_Test\Projects\App1\ClassLibrary1\ClassLibrary1.csproj]

研究了半天,发现启动项没有问题,于是把启动项和子project的项目文件拿来一对比。
左边启动项,右边子project

因为我们的子project也被删除了AnyCPU ,但是默认却还是使用的AnyCPU项,所以这才导致我们 nuget.exe restore 失败的。
既然我们这里子project已经没AnyCPU了,那么我们也把Platform设置默认x86.
修改完毕之后再次构建。。。完美! 成功。。
 坑4

MSbuild commnd  /target:Clean;Rebuild;Publish 在这里必须分开写/target:Clean /target:Rebuild /target:Publish ,不然不会识别。

命令中的路径的文件夹名最好不要带空格,不然也是会被认为是非法路径。
总结
上面就是我研究Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包 所遇到的坑,图有点多,希望能帮到需要的同学。。
最近更新:
最近安装了2017,所以一些路径也需要修改。
1.下载最新的nuget.exe,去官网下载最新的v4.0版本,覆盖之前v3.5的那个
2.Msbuild 的路径改为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
上一篇文章      下一篇文章      查看所有文章
加:2016-12-01 15:57:15  更:2017-05-14 22:59:36 
 
  WinRT-Metro 最新文章
背水一战 Windows 10 (76)
背水一战 Windows 10 (75)
uwp ListView列表滑动特效
背水一战 Windows 10 (74)
背水一战 Windows 10 (73)
背水一战 Windows 10 (72)
UWP 手绘视频创作工具技术分享系列
13、在 uwp应用中,给图片添加高斯模糊滤镜
Win2D学习系列(一):HelloWin2D
背水一战 Windows 10 (7)
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年9日历
2018-9-25 22:52:12
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库