csproj LangVersion 属性覆盖任何导入的项目

我有一个带有 的 csproj <LangVersion>default</LangVersion>,它当前默认为 c# 7.0。

如果我手动将其更改为 7.3,它会正确编译使用 7.1 及更高版本的某些功能的代码。

当然,我可以在每个 csproj 上更改此设置,但是由于我们有很多,我正在寻找其他解决方案。

我在存储库的根目录中添加了 Directory.Build.props,并将其导入到 csproj 中。但是<LangVersion>来自 csproj 的设置优先于<LangVersion>来自我的道具文件的设置......无论我在 csproj 中的哪个位置导入它。

<LangVersion>如果这可以从一些主道具继承,我宁愿不要求每个人从他们的 csproj 和所有未来的 csproj 中删除该属性……但似乎并非如此。我在这里错过了什么?


一只甜甜圈
浏览 271回答 1
1回答

有只小跳蛙

该Directory.Build.props文件<Import>在项目文件的开头 (!)自动导入(不需要)。因此,项目文件中的每个内容都添加在该文件的内容之后,因此将覆盖之前定义的值。(除非 csproj 包含类似 的条件<LangVersion Condition="'$(LangVersion)' != ''">…)。要覆盖来自 csproj 文件的任何值,您可以使用Directory.Build.targets在 (!) 项目内容之后自动导入的文件,该文件允许您覆盖项目文件中设置的值。
打开App,查看更多内容
随时随地看视频慕课网APP