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

3
我知道如何将C#语言版本设置为使用最新的语法(项目>属性>生成>高级>语言设置...)这总是默认为“C#最新主要版本(默认)”。
有没有办法让Visual Studio将新项目的语言版本默认为非默认值;最好是“C#最新次要版本(最新)”?
实际上,我希望在VS2017中创建任何新项目时将latest作为langversion参数传递给MSBUILD,而无需记住更改此设置。 编辑 - 为了解决可能重复发布的链接问题,我已经在原始问题中包含了该链接...我不想像上述链接中建议的那样通过修改'Microsoft.Common.props'来完成这个操作,因为我必须更改所有构建机器以默认包含它(构建机器应只运行MSBuild;它们不应包含未来构建可能不适用的指令)-理想情况下,该值应存在于csproj文件中。

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

编辑-新信息-2019年10月
对我来说,VS2019已经解决了这个问题-请参见link。根据您使用的框架版本不同,默认情况下会得到不同的语言版本目标。这不完全是我想要的,但它解决了我的问题。在向Microsoft提交问题票据后,他们表示不愿更改VS2017以执行相同的操作,所以现在是升级的时候了!


3
你可以通过创建项目模板来实现这个目标。 - Matthew Watson
@SeM 你提出的重复问题已经在我的问题中提到了,我已经更新了我的问题以反映为什么我不想通过编辑“Microsoft.Common.props”文件来解决这个问题。 - Jay
@MatthewWatson 听起来是个好主意 - 我稍后会试一下,然后告诉你我的进展情况。 - Jay
1
我已向微软提出了有关此问题的功能请求:https://developercommunity.visualstudio.com/idea/360820/set-the-default-c-build-language-in-visual-studio.html - Jay
1
我已经点赞了那个请求,因为我也想这样做。 - Matthew Watson
2个回答

4
虽然它不会更改所有新解决方案和项目的默认设置,但对于您正在处理的较大项目,您可以在解决方案目录(或任何要应用的目录,甚至可以是您的“C:\Users”目录)中创建一个“Directory.Build.props”文件
在此文件中,您可以为所有项目设置各种默认值。
<Project>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
</Project>

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

感谢您抽出时间回复,但正如我在问题中所指出的 - 我特别不想这样做。原因是我正在Linux中启动Docker容器,根据需要构建代码作为我的CI过程的一部分。我真的不想维护一个定制的镜像仓库,因为microsoft/dotnet镜像变化非常频繁。 - Jay
你在那张图片里做什么?你是在使用VS还是只用了dotnet命令行界面?为dotnet new创建一个模板比为VS创建要容易得多。 - Martin Ullrich
我正在使用 MS 镜像的容器实例,挂载来自主机的源代码目录,并使用 dotnet cli 构建我的应用程序。我只希望在不需要任何额外配置的情况下构建它,而不是让我的构建脚本/机器/容器需要进行任何更改。我当然可以按照您建议的做法去做,但我更愿意不改变已经尝试、测试和工作的流程。现在,我要么忍受手动设置构建语言的不便,要么按照被接受的答案使用我的新模板,因为这两种方式都将指令放入 csproj 文件中。 - Jay
1
我明白了,谢谢您的解释,看到人们如何使用这个产品总是很有趣。 - Martin Ullrich

2
在Visual Studio 2017中设置默认的C#编译语言版本
像Matthew评论的那样,您可以使用自定义项目模板来设置该设置。
当您想为任何新项目设置langversion参数时,您可以使用您的自定义项目模板创建新项目,否则使用默认模板。
注意:如果您只为一个解决方案而不是多个解决方案设置此设置,则Martin的建议也是一个不错的选择。
希望这有所帮助。

这不是理想的解决方案,但它可以工作。我也已经向微软提出了一个功能请求,希望将此功能添加到 Visual Studio 中。feature request - Jay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接