c# - 在 Visual Studio 2017 中设置默认的 C# 构建语言版本

标签 c# .net msbuild .net-core visual-studio-2017

我知道如何设置 C# 语言版本以使用最新语法(项目 > 属性 > 构建 > 高级 > 语言设置...)这始终默认为“C# 最新主要版本(默认)”

有没有办法让 Visual Studio 将新项目的语言版本默认为 non-default值(value);最好是“C# 最新次要版本(最新)”?

实际上,我希望将 latest 作为 langversion 传递给 MSBUILD我在 VS2017 中创建的任何新项目的参数,而无需记住更改此设置。

编辑 - 解决关于我已经包含在我的原始问题中的链接的可能重复帖子......我真的不想通过按照建议更改“Microsoft.Common.props”来做到这一点在前面提到的链接中,因为我必须更改我所有的构建机器以默认包含它(构建机器应该只运行 MSBuild;它们不应该包含可能不适用于 future 构建的指令)——理想情况下,该值应该是存在于 csproj 文件中。

如果这是重复的,我深表歉意 - 我已经广泛搜索了这个网站,并在谷歌上搜索了答案 - 但我还没有找到答案。

编辑 - 新信息 - 2019 年 10 月
VS2019 已经为我解决了这个问题 - 请参阅 link .根据您使用的框架版本,默认情况下您会获得不同的语言版本目标。这不是我想要的,但它解决了我的问题。向微软提交了问题工单后,发现他们不愿意更改 VS2017 来做同样的事情,所以我该升级了!

最佳答案

虽然它不会更改所有新解决方案+项目的默认设置,但对于您正在进行的大型项目,您可以 create a Directory.Build.props file in your solution directory (或者您希望它应用到的任何目录,甚至可以是您的 C:\Users 目录)。

在此文件中,您可以为所有项目设置各种默认值:

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

这对大型项目有很大帮助,因此您添加到解决方案的所有新项目都将具有相同的配置。

关于c# - 在 Visual Studio 2017 中设置默认的 C# 构建语言版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52849994/

相关文章:

c# - 让 WebAPI Controller 向另一个 REST 服务发送 http 请求

c# - 调用属性时调用方法

c# - 我应该避免使用 'async void' 事件处理程序吗?

c# - 为什么 Microsoft.Build.Evaluation 在 64 位 PC 上将 $(ProgramFiles) 评估为 "c:\program files"?

c++ - Visual Studio 2008 项目的 msbuild

msbuild - msbuild 可以解析转换产生的通配符表达式吗?

c# - 将 char 数组值从 C++ 传递到 C# 应用程序

c# - 在 C# EF 中,Where(o=>o.Equals(x)) 是否被视为客户端函数?

c# - 是否应该重写所有接口(interface)以返回 Task<Result>?

c# - WPF FlowDocument - 绝对字符位置