我有一个<LangVersion>default</LangVersion>
的csproj,当前默认为c#7.0。
如果我手动将其更改为7.3,它将正确编译使用7.1及更高版本中某些功能的代码。
我当然可以在每个csproj上更改它,但是由于我们有很多,我正在寻找其他解决方案。
我在存储库的根目录中添加了Directory.Build.props,并将其导入到csproj中。但是csproj中<LangVersion>
的设置优先于props文件中<LangVersion>
的设置……无论我将其导入csproj中的什么位置。
如果要从某些主道具继承过来,我不想让每个人都从其cproj和将来的cproj中删除<LangVersion>
属性……但这似乎并非如此。我在这里想念什么?
答案 0 :(得分:5)
Directory.Build.props
文件将自动导入(无需<Import>
)在项目文件的开头(!)。
因此,项目文件中的每个内容都将添加到该文件的内容之后,因此将覆盖之前定义的值。 (除非csproj包含类似<LangVersion Condition="'$(LangVersion)' != ''">…
的条件)。
要覆盖来自csproj文件的任何值,可以使用Directory.Build.targets
文件,该文件会在项目内容(!)之后自动导入,从而允许您覆盖在项目文件中设置的值。