如何在一处更改我的解决方案中所有项目的 C# 语言版本?
Posted
技术标签:
【中文标题】如何在一处更改我的解决方案中所有项目的 C# 语言版本?【英文标题】:How to change C# Language Version for all of the projects in my solution in one place? 【发布时间】:2020-08-09 13:33:51 【问题描述】:我有一个包含 20 个项目的解决方案,我想将所有项目的 C# 版本更改为 C# 7.3
有没有一种方法可以一次更改所有项目的版本?我知道我可以从 Project 的 Properties 更改 Language Version,但我不想重复 20 次。
【问题讨论】:
如果可能 - 您还可以将您的 Visual Studio 升级到 2019,其中 default language versions 设置为您想要的。 我建议更改一个项目并将更改后的项目与原始项目进行比较。然后您可以在文件中执行查找和替换以替换所有其他文件。 Notepad++ 有一个在文件中查找和替换的选项。 请注意,较新版本的 Visual Studio 不允许您通过此 UI 指定语言版本。语言版本根据目标框架确定。您仍然可以在项目文件中使用LangLevel
覆盖它,如下面的答案所示。
【参考方案1】:
要同时为所有项目设置版本,您可以在存储库的根目录下创建一个名为 Directory.Build.props
(在 Linux 上区分大小写)的文件。此文件包含项目的常用属性列表:
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<!--<LangVersion>preview</LangVersion>-->
<!--<LangVersion>7.3</LangVersion>-->
</PropertyGroup>
</Project>
https://www.meziantou.net/4-ways-to-enable-the-latest-csharp-features.htm#method-4-using-a-pro
【讨论】:
感谢这篇精彩的博客。是否可以使用特定版本,例如:<LangVersion>7.2</LangVersion>
?
当然你可以指定你想要的版本比如7.3
不幸的是,intellisense 不适用于 Directory.Build.props
方法。它在我的解决方案文件中显示了很多错误。希望我能找到解决办法。
显然在旧的 SDK 项目中你可能需要ToolsVersion="16.0"
。见***.com/questions/53633538/…【参考方案2】:
接受的答案很好,我只是添加一些细节。
我在存储库的根目录创建了Directory.Build.props
文件,并将其作为解决方案项 添加到解决方案中。这是文件的内容:
<Project>
<PropertyGroup>
<LangVersion>7.3</LangVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
</PropertyGroup>
</Project>
注1:
如果您修改这些设置,您需要重新启动 Visual Studio 以使更改生效。
注2:
您需要MSBuild version 15 或更高版本才能使用Directory.Build.props
。要检查 MSBuild 版本,请在文本编辑器中打开您的项目文件并查找以下内容:
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
这里,15.0
表示您的 MSBuild 版本,如果您需要升级您的 MSBuild 版本,请参阅this document。
【讨论】:
以上是关于如何在一处更改我的解决方案中所有项目的 C# 语言版本?的主要内容,如果未能解决你的问题,请参考以下文章