温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

再次记录 Visual Studio 2015 CTP 5 的一个坑

发布时间:2020-07-03 04:05:58 来源:网络 阅读:523 作者:林羽恒 栏目:网络安全

升级到 VS2015 CTP 之后,今天要改项目中的一个东西,然后就不得不把 C# 6.0 改变的语法代码中改了下(之前没改,大约200多个),首先,比如下面示例代码:

var fullName = "\{customer.FirstName} \{customer.LastName}";

项目中有很多这样的类似代码,这些都得改掉,怎么办?手动改???算了,还是批量修改吧,但是怎么批量替换呢,难道直接把“\ {”替换成“{”,但是“$"该怎么加呢?这个问题我思考了好久,之后还想用正则表达式替换,但是语法写不出来,哎,最后的替换方式是:手动+替换,替换“\ {”,然后手动在字符串前加“$”。

这里需要注意的是,千万不要批量替换“\ {”,因为替换之后,你不知道哪里用到了字符串变量,因为它会把“{”作为字符串的一部分,而没有了错误提示和智能提示,这个千万要记住,如果你这样替换,那你就死了。

再记录一个,之前在"{"中,写三目表达式是可以的,比如下面:

var fullName = "\{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} \{customer.LastName}";

但是,替换成现在的语法特性,比如下面:

var fullName = $"{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} {customer.LastName}";

上面这样写是会报错的,这个问题也困扰我很久,难道这也不支持?最后搞了好久,发现要在表达式上加“()”,如下:

var fullName = $"{(customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName)} {customer.LastName}";

事情还没完,话说我改的差不多了,我自认为是把所有的语法特性的代码都改了,然后充满信心的“Build”,然后就出现了下面这样的情况:

再次记录 Visual Studio 2015 CTP 5 的一个坑

错误信息:“Metadata file 'xxxxxx.dll' could not be found” CSC,这个问题看到都头疼,然后我就搜遍了 Google,基本上的解决方式是:

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

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

  3. Rebuild the startup project.

无效,再搜,再尝试,无效,再搜,再尝试。。。

解决一个问题,如果方向错了,那你就死惨了,我现在就是这样。

最后猜怎么着?还是代码问题,有一个类库的语法特性代码没有改掉,我滴妈呀,为什么 VS2015 CTP 的错误提示没有显示出来呢,而是显示了一些乱七八糟的东西,最后发现的地方是 Output(输出窗口):

error CS1009: Unrecognized escape sequence

看到这样的错误,我就释然了,要改代码了。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI