在创建新的Visual Studio解决方案时,我希望使用Directory.Build.props
来控制所有c#项目的c#版本号,而不必单独设置它们。
但是,混合使用c#和f#文件夹会导致编译错误。
Severity Code Description Project File Line Suppression State
Error FS0246 Unrecognized value '8.0' for --langversion use --langversion:? for complete list FSharpLib C:sourcesolutionFSharpLibFSC 1 Active
这是证明问题的最小解决方案。在一个真正的解决方案中,显然有更多的项目。
文件夹结构
\solution
\solution\Directory.Build.props
目录.构建.操作
<Project>
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
</Project>
项目文件(为了完整性(
CSharpLib<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
FSharpLib<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="Library.fs" />
</ItemGroup>
</Project>
是否可以将c sharp
和f sharp
项目与根文件夹中的Directory.Build.props
并排,以仅应用于c sharp
项目?
将构建道具移动到下面只有csharp项目的文件夹中是可行的,但我不想以这种方式构建东西——我希望相关的模块彼此并排。
您可以将Condition="'$(MSBuildProjectExtension)'=='.csproj'"
添加到Directory.build.props
PropertyGroup
中,以仅将其应用于C#项目。