博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BOM导致的Build failed in Jenkins with error MSB4025
阅读量:6619 次
发布时间:2019-06-25

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

hot3.png

昨天有个release持续build fail,报错为

error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 1, position 1.

用Notepad++临时打开查看,没有发现任何异常

113443_pu81_921876.png

在Stash上能发现文件开始处多了一些小红点

113535_g2Cf_921876.png

这个 "\ufeff" 就是BOM (byte order marks) []

既然代码里有这个,删除即可,jenkins build success

查看了Master上的代码,没有这个问题,所以平时也不会有问题。

在这个Release Branch上查看History, 发现红点出自去年的某次提交,然后在这个branch中便一直保留下来了。

正好昨天merge一些code ,所以带出来这个问题。

因为BOM是Windows的默认模式,所以在跨平台工作的时候,很容易出现这个问题,肉眼很难分辨出来。

在Unix下用VI做个实验:

With BOM

114328_QQ8S_921876.png

Without BOM

114328_VCtX_921876.png

结果立现!

结论 : Windows下默认编辑器的UTF-8是with BOM的,而UTF-16因为涉及到Big-Endian/Little-Endian,也会添加BOM的标识在字节流的开头。所以建议所有源文件使用UTF-8 without BOM的 格式存储。 

转载于:https://my.oschina.net/u/921876/blog/411715

你可能感兴趣的文章
用友NC V6.3打造集团企业高效信息平台
查看>>
Python web前端 07 函数及作用域
查看>>
[Swift A] - Welcome to Swift
查看>>
我的学习思维:有关阅读的方法
查看>>
JAVA - 多线程 两种方法的比较
查看>>
mysql中查看视图的元数据?
查看>>
js ajax跨域调用
查看>>
记一次基于vue的spa多页签实践经验
查看>>
学习函数指针的笔记
查看>>
BZOJ4229选择——LCT+并查集+离线(LCT动态维护边双连通分量)
查看>>
robocopy——Windows下的高效文件拷贝
查看>>
sqlite
查看>>
字符串:格式化 - 零基础入门学习Python015
查看>>
ubuntu下安装nginx
查看>>
Eclipse快捷键大全(转载)
查看>>
Java 学习笔记之 异常法停止线程
查看>>
ArrayList源码
查看>>
Db2性能:系统CPU高问题分析的一些思路
查看>>
基于Docker一键部署大规模Hadoop集群及设计思路
查看>>
Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
查看>>