GitLab CI .NET 部署中的几个坑
- 信息乱码
- Msbuild编译失败 VS却编译成功
- 设置环境变量本地有用,但是runner跑起来就失败
- powershell公共变量为空
- 命令执行失败,却集成成功,pass了
1.信息乱码
信息乱码是真的烦,找了半天,博友有说在yml加上"chcp 65001" 就行,然并卵。搞了许久最后用暴力解决办法解决,设置Unicode UTF-8 提供全球语言支持。如果是服务器的话也可以直接把系统语言改成英语
设置好之后,再retry。就可以了
2.Msbuild编译失败 VS却编译成功
直接说原因:因为选择错了msbuild.exe。如果安装了everything 可以看看系统中有多少msbuild.exe,其中有的是阉割版的,所以编译失败,要选择你当前vs版本匹配的exe。例如选择图中 地址中包含2017那个
3.设置环境变量无效
起初我也是看到yml文档一大串的地址看的比较难受,于是遍想弄环境变量,本地powershell用环境变量命令跑msbuild没问题,但是一旦发布到gitrunner跑就失败,异常:ObjectNotFound: (nuget:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException,意思是说找不到这命令,OJBK,醉了,最后发现自己配置的环境变量配到用户变量去了……..
最后 只要把地址配到系统变量就行了
4.powershell公共变量无效
发现我在job1中设置的公共变量在job2中为空。原因公共变量应该设置到"before_script" 或者"variables" 。Job是独立的
5.命令执行失败,却集成成功,pass了
看到pipelines中显示
进入job中查看发现却有异常,有些脚本没执行成功
解决办法:yml中加上 - $ErrorActionPreference = "Stop" 就行,然后retry,就可以是failed的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构