再次記錄 Visual Studio 2015 CTP 5 的一個坑

升級到 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」,而後就出現了下面這樣的狀況:字符串

231051286106069.png

錯誤信息:「Metadata file 'xxxxxx.dll' could not be found」 CSC,這個問題看到都頭疼,而後我就搜遍了 Google,基本上的解決方式是:it

  1. Clean every project individually (Right click> Clean).ast

  2. Rebuild every project individually (Right click> Rebuild).class

  3. Rebuild the startup project.

無效,再搜,再嘗試,無效,再搜,再嘗試。。。

解決一個問題,若是方向錯了,那你就死慘了,我如今就是這樣。

最後猜怎麼着?仍是代碼問題,有一個類庫的語法特性代碼沒有改掉,我滴媽呀,爲何 VS2015 CTP 的錯誤提示沒有顯示出來呢,而是顯示了一些亂七八糟的東西,最後發現的地方是 Output(輸出窗口):

error CS1009: Unrecognized escape sequence

看到這樣的錯誤,我就釋然了,要改代碼了。

相關文章
相關標籤/搜索