如何为所有项目更改Visual Studio 2017默认语言版本?

时间:2017-06-22 12:12:28

标签: c# visual-studio

如何在C#7.0上为所有项目设置语言版本?

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

默认参数来自哪里,我想更改默认值

PS:我不是指UI语言

1 个答案:

答案 0 :(得分:29)

default值的含义来自C#编译器本身。所以为了改变它的意思,你需要改变编译器。

但是在Visual Studio 2017附带的编译器default实际上意味着C#7.0,所以你不需要做任何事情。

Visual Studio Project System只将语言版本值传递给MSBuild。 MSBuild将其作为/langversion选项进一步传递给C#编译器。 /langversion选项允许您指定编译器接受的高级语言版本。换句话说,它允许您将语言功能限制用于特定版本。如果使用高于您指定的语言版本的功能,C#编译器将发出错误。这就是全部。如果将/langversion指定为default,则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自定义文件。 MSDN上Customize your build文章的相关摘录:

  

...现在,您可以通过在repo根目录下名为Directory.Build.props的单个文件中将其添加到每个项目中,从而在一个步骤中添加新属性。运行MSBuild时,Microsoft.Common.props会在目录结构中搜索Directory.Build.props文件(而Microsoft.Common.targets会查找Directory.Build.targets)。如果找到一个,则导入该属性。 Directory.Build.props是一个用户定义的文件,它为目录下的项目提供自定义。

以下Directory.Build.props文件的示例指示C#编译器在所有项目中接受最新的次要C#版本(Visual Studio 2017版本15.5.3中的C#7.2)的所有有效语法,因为它们的.csproj文件没有&#39 ; t包括优先的<LangVersion>标记:

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

有关详细信息,请查看: