为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
一只甜甜圈 2021-12-25 18:42:05
我有一个带有 的 csproj <LangVersion>default</LangVersion>,它当前默认为 c# 7.0。如果我手动将其更改为 7.3,它会正确编译使用 7.1 及更高版本的某些功能的代码。当然,我可以在每个 csproj 上更改此设置,但是由于我们有很多,我正在寻找其他解决方案。我在存储库的根目录中添加了 Directory.Build.props,并将其导入到 csproj 中。但是<LangVersion>来自 csproj 的设置优先于<LangVersion>来自我的道具文件的设置......无论我在 csproj 中的哪个位置导入它。<LangVersion>如果这可以从一些主道具继承,我宁愿不要求每个人从他们的 csproj 和所有未来的 csproj 中删除该属性……但似乎并非如此。我在这里错过了什么?
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

Directory.Build.props文件<Import>在项目文件的开头 (!)自动导入(不需要)。

因此,项目文件中的每个内容都添加在该文件的内容之后,因此将覆盖之前定义的值。(除非 csproj 包含类似 的条件<LangVersion Condition="'$(LangVersion)' != ''">…)。

要覆盖来自 csproj 文件的任何值,您可以使用Directory.Build.targets在 (!) 项目内容之后自动导入的文件,该文件允许您覆盖项目文件中设置的值。


查看完整回答
反对 回复 2021-12-25
  • 1 回答
  • 0 关注
  • 270 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信