使用VS2015 + Resharper时不要使用C#6

4

我目前正在测试VS2015,以查看它如何与我们的解决方案配合使用。 我遇到了一些麻烦,因为VS2015带来了C#6,但是我不能使用(因为我的同事还没有这个版本,因为我们的构建机器在几个月后才会升级到此版本)。

我发现应该能够为每个项目指定语言版本为C#5。 我已经对我们所有的项目(总共270个)进行了设置。 现在,当我使用C#6功能进行编译时,会出现错误提示,这很好。

但是,resharper却一直试图让我使用表达式体属性、字符串插值等功能......

有没有一种方法可以让Resharper不提出这种更改建议?


请参考“如何在Visual Studio 2015中禁用C# 6支持?” - 此答案建议编辑.dotsettings文件以禁用ReSharper对解决方案中C# 6.0功能的建议。 - Wai Ha Lee
2个回答

5
我了解您刚才是通过以下方式在Roslyn中禁用了C#6支持:
项目属性/生成/高级/语言版本。 但是您还必须告诉ReSharper不建议使用C#6功能(请参见注释),方法是选择解决方案资源管理器中的项目,然后在属性窗口中更改以下内容: properties window 好消息是您可以在解决方案资源管理器中一次选择多个项目。

1
ReSharper将使用项目的默认C#级别。默认情况下,这未设置,意味着它总是浮动 - 因此VS2015使用C# 6。因此,您可以通过项目属性→生成→高级→语言版本(设置.csproj文件中的<LangVersion>属性)指定语言版本,并且ReSharper将遵守该设置。答案中的设置可用于覆盖此值。 - citizenmatt
1
@citizenmatt 嗯,我以为这个方法不起作用,因为OP在问题中这样说了...这使得我的答案无效了,你能否把你的评论变成一个答案?之后我会删除我的答案。 - Lucas Trzesniewski
我可以保证之前我已将其设置为“默认”,并且我的项目语言版本设置为C#5,但没有成功。在每个项目上指定c#5.0语言级别后,它可以正常工作。因此,我可以假设@LucasTrzesniewski的答案是正确的。两个问题:对于新项目,有没有一种方法可以更改默认值?这个项目设置是否在我们的开发人员之间共享(我们使用TFS作为源代码控制)? - J4N
如果您提交DotSettings文件,配置将被共享。至于其他方面,也许@citizenmatt可以告诉我们是否有什么问题。 - Lucas Trzesniewski
1
我漏掉了一个重要的细节,即 LangVersion 的更改不会实时识别,并且需要重新加载项目。我也将我的评论添加为答案。 - citizenmatt
显示剩余2条评论

2
ReSharper将使用项目的默认C#级别,这通常未设置,意味着它始终上浮 - 因此VS2015使用C# 6。您可以通过项目属性→生成→高级→语言版本(设置.csproj文件中的属性)指定语言版本,然后ReSharper将遵循该设置。但是,ReSharper不会收到值已更改的通知,因此不会实时更新,但在重新加载项目/解决方案时会遵循该设置。或者,根据@lucas-trzesniewski的答案,您可以直接告诉ReSharper以何种C#版本为目标,从而覆盖项目的LangVersion(或默认缺乏LangVersion)。

1
在我的情况下,我使用了一个工具(https://github.com/khellang/LangVersionFixer)一次性更改了所有的版本,然后才打开了解决方案,所以应该让resharper能够读取它,但事实并非如此。你有没有看到任何原因它没有起作用? - J4N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接