【发布时间】:2019-11-29 21:26:55
【问题描述】:
背景
我在我的根 repo 文件夹中创建了一个Directory.Build.props,其内容如下:
<Project>
<PropertyGroup>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
</Project>
我需要防止在我们的代码库中使用 C# 8 语法,因为它的目标是 .Net 4.7.2
上述文件为解决方案中的每个项目设置LangVersion 属性。
问题
我们的代码库很大。一个解决方案中的许多项目,许多程序员在不同的地方工作和/或添加新的,这本身不是问题,而是任何程序员都可以在他们自己的.csproj 文件中覆盖LangVersion 的事实。
我知道我们可以在代码审查阶段停止这些更改,或者每小时向所有程序员发送提醒,告诉他们不要在这个特定项目中使用 C# 8。但我想知道我是否可以通过给他们一个漂亮而漂亮的编译器错误来庆祝他们的大胆。
也许与 Roslyn 一起使用自定义代码分析器?有什么办法吗?
【问题讨论】:
-
在最坏的情况下,您可以添加一个自定义验证构建步骤,检查(更改?)
.props/.csproj文件中没有一个具有 LangVersion > 7.3 -
感谢@EugenePodskal,我已经认为在预构建事件命令行中运行的自定义脚本可能会解决问题。但是我可能更喜欢更简洁的东西..
标签: c# .net msbuild csproj sln-file