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

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

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

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

我宁愿不要要求所有人从其cproj和将来的所有cproj中删除<LangVersion>属性,如果可以从某些主道具中继承该属性的话……但是事实并非如此。我在这里想念什么?

最佳答案

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

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

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

关于c# - csproj LangVersion属性将覆盖任何导入的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52117973/

10-13 08:05