升级到 VS2015 CTP 以后,今天要改项目中的一个东西,而后就不得不把 C# 6.0 改变的语法代码中改了下(以前没改,大约200多个),首先,好比下面示例代码:正则表达式
var fullName = "\{customer.FirstName} \{customer.LastName}";
项目中有不少这样的相似代码,这些都得改掉,怎么办?手动改???算了,仍是批量修改吧,可是怎么批量替换呢,难道直接把“\ {”替换成“{”,可是“$"该怎么加呢?这个问题我思考了很久,以后还想用正则表达式替换,可是语法写不出来,哎,最后的替换方式是:手动+替换,替换“\ {”,而后手动在字符串前加“$”。ide
这里须要注意的是,千万不要批量替换“\ {”,由于替换以后,你不知道哪里用到了字符串变量,由于它会把“{”做为字符串的一部分,而没有了错误提示和智能提示,这个千万要记住,若是你这样替换,那你就死了。ui
再记录一个,以前在"{"中,写三目表达式是能够的,好比下面:spa
var fullName = "\{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} \{customer.LastName}";
可是,替换成如今的语法特性,好比下面:orm
var fullName = $"{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} {customer.LastName}";
上面这样写是会报错的,这个问题也困扰我好久,难道这也不支持?最后搞了很久,发现要在表达式上加“()”,以下:blog
var fullName = $"{(customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName)} {customer.LastName}";
事情还没完,话说我改的差很少了,我自认为是把全部的语法特性的代码都改了,而后充满信心的“Build”,而后就出现了下面这样的状况:字符串
错误信息:“Metadata file 'xxxxxx.dll' could not be found” CSC,这个问题看到都头疼,而后我就搜遍了 Google,基本上的解决方式是:it
Clean every project individually (Right click> Clean).ast
Rebuild every project individually (Right click> Rebuild).class
Rebuild the startup project.
无效,再搜,再尝试,无效,再搜,再尝试。。。
解决一个问题,若是方向错了,那你就死惨了,我如今就是这样。
最后猜怎么着?仍是代码问题,有一个类库的语法特性代码没有改掉,我滴妈呀,为何 VS2015 CTP 的错误提示没有显示出来呢,而是显示了一些乱七八糟的东西,最后发现的地方是 Output(输出窗口):
error CS1009: Unrecognized escape sequence
看到这样的错误,我就释然了,要改代码了。