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