1+ <!--
2+ This file allows overriding of properties for all projects in the directory.
3+ See https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-by-directory?view=vs-2022#directorybuildprops-and-directorybuildtargets
4+ -->
5+ <Project >
6+ <ItemGroup >
7+ <!-- Dotnet Watch to know about this file -->
8+ <Watch Include =" $(MSBuildThisFileFullPath)" />
9+ </ItemGroup >
10+
11+ <PropertyGroup >
12+ <_BuildProjBaseIntermediateOutputPath >$(MSBuildThisFileDirectory)build/obj/</_BuildProjBaseIntermediateOutputPath >
13+ <_DotnetToolManifestFile >$(MSBuildThisFileDirectory).config/dotnet-tools.json</_DotnetToolManifestFile >
14+ <_DotnetToolRestoreOutputFile >$(_BuildProjBaseIntermediateOutputPath)/dotnet-tool-restore-$(NETCoreSdkVersion)-$(OS)</_DotnetToolRestoreOutputFile >
15+ <_DotnetFantomasOutputFile >$(BaseIntermediateOutputPath)dotnet-fantomas-msbuild-$(NETCoreSdkVersion)-$(OS)</_DotnetFantomasOutputFile >
16+ </PropertyGroup >
17+
18+ <!-- Make sure that dotnet tools are restored before restoring any project -->
19+ <Target Name =" ToolRestore" BeforeTargets =" Restore;CollectPackageReferences" Inputs =" $(_DotnetToolManifestFile)" Outputs =" $(_DotnetToolRestoreOutputFile)" >
20+ <Exec Command =" dotnet tool restore" WorkingDirectory =" $(MSBuildThisFileDirectory)" StandardOutputImportance =" High" StandardErrorImportance =" High" />
21+ <MakeDir Directories =" $(_BuildProjBaseIntermediateOutputPath)" />
22+ <Touch Files =" $(_DotnetToolRestoreOutputFile)" AlwaysCreate =" True" ForceTouch =" True" />
23+ </Target >
24+
25+ <!-- Make sure that files are formatted before building -->
26+ <Target Name =" FormatFSharp" Condition =" '$(MSBuildProjectExtension)' == '.fsproj' AND '$(DesignTimeBuild)' != 'true' " BeforeTargets =" BeforeBuild" Inputs =" @(Compile)" Outputs =" $(_DotnetFantomasOutputFile)" >
27+ <Exec Command =" dotnet fantomas $(MSBuildProjectDirectory)" StandardOutputImportance =" High" StandardErrorImportance =" High" WorkingDirectory =" $(MSBuildThisFileDirectory)" ContinueOnError =" WarnAndContinue" />
28+ <Touch Files =" $(_DotnetFantomasOutputFile)" AlwaysCreate =" True" ForceTouch =" True" />
29+ </Target >
30+
31+ <!-- Only format once per project -->
32+ <!-- https://learn.microsoft.com/en-us/visualstudio/msbuild/run-target-exactly-once?view=vs-2022 -->
33+ <Target Name =" FormatFSharpBeforeOuterBuild"
34+ DependsOnTargets =" FormatFSharp"
35+ BeforeTargets =" DispatchToInnerBuilds"
36+ />
37+
38+ <Target Name =" FormatFSharpBeforeInnerBuild"
39+ BeforeTargets =" BeforeBuild" >
40+ <MSBuild Projects =" $(MSBuildProjectFullPath)"
41+ Targets =" FormatFSharp"
42+ RemoveProperties =" TargetFramework" />
43+ </Target >
44+
45+
46+ </Project >
0 commit comments