2015-12-09 39 views
3

我目前正在測試VS2015,看看它如何與我們的解決方案作出反應。我遇到了一些麻煩,因爲VS2015帶來了C#6,我不能使用而使用(因爲我的同事沒有這個,因爲我們的構建機器在幾個月前也沒有這個功能)。VS2015 + Resharper:不要使用C#6

我看到我應該能夠爲每個項目語言版本指定C#5。我爲我們所有的項目(其中270個)做過。現在,當我用C#6編譯功能時,出現錯誤,這很好。

但是,ReSharper的不斷試圖讓我使用性能表達身體,串插,......

有沒有一種方式,ReSharper的不建議這種變化的?

+0

請參閱「[*如何禁用Visual Studio 2015中的C#6支持*](http://stackoverflow.com/q/30461640/1364007)」 - [this answer](http://stackoverflow.com/a/31611892/1364007)建議編輯'.dotsettings'文件以禁用ReSharper中針對*解決方案*的C#6.0功能建議。 –

回答

5

所以我理解你使用羅斯林只是禁用C#6支持:
項目屬性/生成/高級/語言版本

但你也必須告訴ReSharper的不通過在Solution Explorer中選擇一個項目,然後改變屬性窗口中的以下建議C#6功能 (見註釋):

properties window

好消息是,您可以在解決方案資源管理器中一次選擇多個項目。

+0

因此,resharper無法使用該項目的信息?因爲我們討厭在恢復C#6時必須執行兩次 – J4N

+0

據我所知,不幸的是,ReSharper設置獨立於Roslyn設置。但請記住:1)您可以在解決方案資源管理器中選擇多個項目並一次更改選項,或者:2)直接混淆將爲每個項目創建的.DotSettings文件。如果你沒有任何其他項目特定的設置,刪除DotSettings文件應該做的伎倆。 –

+1

ReSharper將使用項目的默認C#級別。默認情況下,這沒有設置,這意味着它總是浮動起來 - 所以VS2015使用C#6.所以你可以通過項目屬性指定語言版本→構建→高級→語言版本(它在'.csproj中設置''屬性'文件),ReSharper將會遵守該設置。答案中的設置可用於覆蓋此值。 – citizenmatt

2

ReSharper將使用項目的默認C#級別。默認情況下,這沒有設置,這意味着它總是浮動 - 所以VS2015使用C#6.所以你可以通過項目屬性→生成→高級→語言版本(它將設置.csproj文件中的屬性)和ReSharper指定語言版本將尊重這一設置。

但是,ReSharper並沒有得到有關值已更改的通知,因此不會即時更新,但它會遵循項目/解決方案重新加載的設置。

或者,根據@ lucas-trzesniewski的回答,您可以直接告訴ReSharper直接告訴它應該以哪個C#版本爲目標,從而覆蓋項目的LangVersion(或默認的,缺乏LangVersion)。

+1

在我的情況下,我使用了一個工具(https://github.com/khellang/LangVersionFixer)來立即更改我的所有版本,然後只有我打開了解決方案,因此resharper應該能夠讀取它,但它不是'案件。你有沒有看到任何它不會起作用的原因? – J4N