2017-06-22 215 views
16

如何在C#7.0上爲所有項目設置語言版本?如何更改所有項目的Visual Studio 2017默認語言版本?

Project/Properties/Build/Advanced.../Advanced Build Settings screen

哪裏默認參數從何而來,我想改變默認值

PS:我的意思不是UI語言

+1

[更改的Visual Studio 2017年RC的語言(的可能的複製CscToolPath財產https://stackoverflow.com/questions/40709064/change-language -of-visual-studio-2017-rc) –

+1

我不是指UI語言,而是代碼 – kogoia

+0

https://blogs.msdn.microsoft的語言。com/benjaminperkins/2017/03/23/how-to-enable-c-7-in-visual-studio-2017/look,這可能有助於 – Kirhgoph

回答

9

default值的含義來自於C#編譯器本身。所以爲了改變它的含義,你需要改變編譯器。

但是在Visual Studio 2017自帶的編譯器中default實際上是指C#7.0,所以你不需要做任何事情。

Visual Studio Project System僅將語言版本值傳遞給MSBuild。 MSBuild將其作爲/langversion選項進一步傳遞給C#編譯器。 /langversion選項可讓您指定編譯器接受的高級語言版本。換句話說,它允許您將語言功能的使用限制到某個版本。如果您使用的語言版本高於您指定的特性,則C#編譯器將發出錯誤。就這樣。如果指定/langversiondefault,則C#編譯器將接受上次主要C#語言版本包含的所有有效語法(請參閱MSDN上的/langversion (C# Compiler Options)頁面)。 Visual Studio 2017附帶的最後一個主要C#版本是7.0。請參閱C#GitHub存儲庫上的 Features Added in C# Language Versions頁面。

如果您需要啓用最新次要版本(7.1,7.2等)的功能或禁止一次性使用多個項目或解決方案的一些新的C#功能,則可以使用MSBuild 15 Directory.Build.props自定義文件。相關摘自Customize your build文章MSDN:

...現在你可以一個新的屬性在一步步在你的回購的根稱爲Directory.Build.props一個單獨的文件定義其添加到每個項目。當MSBuild運行時,Microsoft.Common.props將搜索Directory.Build.props文件的目錄結構(並且Microsoft.Common.targets查找Directory.Build.targets)。如果它找到一個,它將導入該屬性。 Directory.Build.props是一個用戶定義的文件,它爲目錄下的項目提供定製。

以下示例Directory.Build.props文件的指示C#編譯器接受的所有項目中最新的次要C#版本(C#在Visual Studio 7.2版2017年15.5.3)的所有有效語法賦予其的.csproj文件不包括<LangVersion>標籤,它的優先級:

<Project> 
    <PropertyGroup> 
     <LangVersion>latest</LangVersion> 
    </PropertyGroup> 
</Project> 

欲瞭解更多信息檢查:

+1

我的VS17默認同時使用Framework 4.6.1和「C#最新主要版本(默認)」。如果我想使用ValueTuple(無nuget),我需要手動將Framework版本更改爲4.7,這是OK 。但是現在如果我想使用c#7.2特性('in'修飾符或'readonly struct'),除非我將語言版本更改爲「C#latest minor version(latest)」,否則我將不得不編譯項目爲每個構建配置做有沒有辦法默認兩個最新?您似乎暗示它已經應該(至少對於langversion而言),但似乎並非如此 – pinkfloydx33

+0

您可以通過在「新建項目」對話框中更改所有新項目來設置默認的.NET Framework版本。對於所有現有的項目,您必須直接在UI中或在.csproj文件中手動更改它。 –

+1

'default'語言版本代表最後一個主要版本,在Visual Studio 2017附帶的編譯器中爲7.0。'latest'代表最後一個次要版本。在Visual Studio 2017 15.5附帶的編譯器中,它意味着7.2。請參見[Visual Studio 2017版本15.5發行說明](https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes)。您可以通過在項目屬性的配置下拉菜單中選擇「所有配置」,或者在.csproj文件的非條件''標籤中放置' latest'來更改所有構建配置。 –

相關問題