【问题标题】:Set the default C# Build Language Version in Visual Studio 2017在 Visual Studio 2017 中设置默认 C# 构建语言版本
【发布时间】:2019-03-21 20:16:17
【问题描述】:

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

有什么方法可以让 Visual Studio 将新项目的语言版本默认为 non-default 值;最好到'C# latest minor version (latest)'?

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

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

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

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

【问题讨论】:

  • 您可以通过creating a Project Template 做到这一点。
  • @SeM 您建议的副本已在我的问题中被引用,我已更新我的问题以反映为什么我不想通过编辑 Microsoft.Common.props 文件来解决此问题
  • @MatthewWatson 这听起来是个好主意 - 我会在今天晚些时候试一试,让你知道我的进展情况。
  • 我已经向微软记录了一个关于此的功能请求:developercommunity.visualstudio.com/idea/360820/…
  • 我已赞成该请求,因为我也想这样做。

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


【解决方案1】:

虽然它不会更改所有新解决方案+项目的默认设置,但对于您正在处理的大型项目,您可以在解决方案目录(或您希望它应用到的任何目录,甚至可以成为您的C:\Users 目录)。

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

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

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

【讨论】:

  • 感谢您抽出宝贵时间回复,但正如我在问题中指出的那样 - 我特别不想这样做。原因是我在 Linux 中启动 Docker 容器以根据需要构建代码,作为我的 CI 流程的一部分。我真的不想维护自定义的图像存储库,因为microsoft/dotnet 图像变化如此频繁。
  • 你在那个图像中做什么?您是在该图像中使用 VS 还是仅使用 dotnet cli?为dotnet new 创建模板比为 VS 创建模板要容易得多
  • 我正在从 MS 映像启动容器实例,使用主机源代码安装目录并使用 dotnet cli 构建我的应用程序。我只是希望它在没有我的构建脚本/机器/容器需要任何额外配置的情况下构建。我当然可以按照你的建议去做,但我不想改变一个经过尝试、测试和工作的过程。现在我要么忍受手动设置构建语言的不便,要么根据接受的答案使用我的新模板,因为两种方式都将指令放入 csproj 文件中。
  • 我明白了,谢谢你的解释,看看人们如何使用这个产品总是很有趣的。
【解决方案2】:

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

就像 Matthew 评论的那样,您可以使用该设置 create a custom project template

当您想为任何新项目设置langversion参数时,您可以使用自定义项目模板创建新项目,否则使用默认模板。

注意:如果您只是为一个解决方案设置此设置,而不是多个解决方案,Martin 的建议也是一个不错的选择。

希望这会有所帮助。

【讨论】:

  • 这并不理想,但它确实有效。我还向 MS 提出了 feature request 来将此功能添加到 Visual Studio。
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 2017-08-04
  • 2018-05-24
  • 2023-04-04
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
相关资源
最近更新 更多