我有一个<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/