想通过MSBuild命令行编译解决方案,但是突然发现解决方案通过IDE加入源码管理后,下载下来的.sln文件,用MSBuild编译该解决方案(格式不正常的)时报错:.sln文件头格式错误。
.sln文件属性Version变为:unrecognized version, 正常应该是Visual Studio 2005
文本内容正常,只是文件格式问题。UE打开时提示转换成DOS格式,16进制编码仅行末换行符为0D00,正常的为0D000A00;不能双击直接打开,只能通过IDE打开。
推断是添加到源代码管理时格式被修改了。还不知道怎么解决,苦恼啊~~~
---------------------------
知道什么问题了。
其实Version是什么无所谓,主要是MSBuild在读取Sln文件时根据前两行(找第一个非空行多好)内容,即所谓的文件头吧:
Microsoft Visual Studio Solution File, Format Version 9.00
而加入到源码管理的.sln(UTF-8格式)第一行 FF FE 0D 00
转换为DOS下,在每行后添加 0D 00 0A 00
这样第一行就变成了两行 FF FE 0D 00 0D 00 0A 00, 导致MSBuild找不到“文件头”,虽然通过手动可以去掉多余的 0D 00,但是如果要进行BVT的话,如何自动处理这个文件也称了问题。
新问题,继续苦恼~~~
---------------------------
放弃直接编译解决方案了。原来想这么做:一是,方便,不用再分别指定其下的工程了;二是:以为只有编译解决方案才能实现增量编译,可是我错了,又试验了下直接编译工程也能实现增量编译(记得原来试验时不能的,所以误解了)。
现在改直接指定工程进行编译,把解决方案文件格式的问题抛开了。