在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元测试和打包,同时输出打包的文件
首先需要创建一个 WPF 项目,最简单的创建方法就是通过下面一句命令行
dotnet new wpf -o Foo
此时就创建了一个叫 Foo 的 WPF 项目了,接下来通过 VisualStudio 打开这个项目,咱现在准备放在 GitHub 上进行自动构建,然后打包一个UWP包出来
可以通过 VisualStudio 新建一个打包项目,这个打包项目就可以将 win32 应用打包为 UWP 包
暂时先使用测试的证书,创建测试证书的方法就是双击打包项目的 Package.appxmanifest 文件,点击打包,然后点击选择证书
点击创建然后输入名字点击确定就可以,请看下图
此时就创建了 Foo_TemporaryKey.pfx
证书文件,当然你的证书名应该和我不相同
在进行 GitHub 的 Action 构建的时候,需要将证书作为 base64 存放,存放在 GitHub 的凭据里面,这样能保持项目的安全
在使用 dotnet 的时候,有一个特别好用的功能叫 dotnet tool 通过这个功能,可以使用很多大佬写的工具,当然就包括了将文件转换为 base64 的工具啦
我上次告诉小伙伴,请他的 dotnet base64 项目添加文件的支持 https://github.com/Towmeykaw/dotnet-base64/issues/2 然后小伙伴很快就支持了这个功能,此时可以通过一句命令安装这个工具
dotnet tool install -g dotnet-base64
接下来就可以通过 base64
这个命令将文件转换为 base64 了,尝试进入到打包项目里面,假设打包项目的测试证书文件是 Foo_TemporaryKey.pfx
文件,那么输入下面代码就可以看到将证书文件转换为 base64 字符串
base64 -f Foo_TemporaryKey.pfx
当然,输出到控制台不是很好复制,使用下面代码可以让这个工具输出到文件里面
base64 -f Foo_TemporaryKey.pfx -o base64.txt
此时就可以拿到了 base64 文件了
打开 GitHub 的项目的设置,进入到 Secrets 页面
点击 Add a new secret 新建保密信息
此时输入 Base64_Encoded_Pfx 作为保密信息名,内容请填写刚才转换的 base64 的内容。此时填写的保密信息名将和创建的模板的内容相同,就不需要做更多的更改
点击添加,然后进入 Action 页面
此时可以看到新推出的 WPF 构建项目
点击 set up this workflow 按钮就可以进行创建,此时需要填写的内容如下
env:
Solution_Name: your-solution-name # 替换为解决方案名 如 MyWpfApp.sln.
Test_Project_Path: your-test-project-path # 替换为测试项目的路径 如 MyWpfApp.Tests\MyWpfApp.Tests.csproj.
Wap_Project_Directory: your-wap-project-directory-name # 替换为相对于解决方案的打包项目文件夹 如 MyWpfApp.Package.
Wap_Project_Path: your-wap-project-path # 替换为打包项目文件路径 如 MyWpf.App.Package\MyWpfApp.Package.wapproj.
替换完成之后点击 Start commit 就完成啦
等待打包完成之后,会自动上传到 artifacts 可以下载,下载的内容就是 UWP 包
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/GitHub-Action-%E6%96%B0%E4%B8%8A%E7%BA%BF-WPF-.NET-Core-%E8%87%AA%E5%8A%A8%E6%9E%84%E5%BB%BA%E6%A8%A1%E6%9D%BF.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
无盈利,不卖课,做纯粹的技术博客
以下是广告时间
推荐关注 Edi.Wang 的公众号
欢迎进入 Eleven 老师组建的 .NET 社区
以上广告全是友情推广,无盈利