11<Project >
22
33 <PropertyGroup >
4- <_AnalyzerProjectOptions >--project " $(MSBuildProjectFile)" </_AnalyzerProjectOptions >
4+ <FSharpAnalyzers_ExeHost Condition =" '$(FSharpAnalyzers_ExeHost)' == ''" >dotnet</FSharpAnalyzers_ExeHost >
5+ <FSharpAnalyzers_Exe Condition =" '$(FSharpAnalyzers_Exe)' == ''" >fsharp-analyzers</FSharpAnalyzers_Exe >
6+ <FSharpAnalyzers_ContinueOnError Condition =" '$(FSharpAnalyzers_ContinueOnError)' == ''" >true</FSharpAnalyzers_ContinueOnError >
7+ <_FSharpAnalyzers_ProjectOptions >--project " $(MSBuildProjectFile)" </_FSharpAnalyzers_ProjectOptions >
58 </PropertyGroup >
69
710 <Target Name =" _AnalyzeFSharpProject" >
811 <Error Condition =" $(FSharpAnalyzersOtherFlags) == ''" Text =" A property FSharpAnalyzersOtherFlags should exists with all the analyzer cli arguments!" />
912 <Exec
10- ContinueOnError =" true "
13+ ContinueOnError =" $(FSharpAnalyzers_ContinueOnError) "
1114 IgnoreExitCode =" true"
12- Command =" dotnet fsharp-analyzers $(_AnalyzerProjectOptions ) $(FSharpAnalyzersOtherFlags)" />
15+ Command =" $(FSharpAnalyzers_ExeHost) $(FSharpAnalyzers_Exe) $(_FSharpAnalyzers_ProjectOptions ) $(FSharpAnalyzersOtherFlags)" />
1316 </Target >
1417
1518 <Target Name =" AnalyzeFSharpProject" DependsOnTargets =" _AnalyzeFSharpProject" />
2528 </PropertyGroup >
2629 </Target >
2730
28- <Target Name =" FsharpAnalyzerAfterBuild" DependsOnTargets =" _SetupFSharpAnalyzerProjectOptions" AfterTargets =" AfterBuild" Condition =" '$(RunAnalyzers)' == 'true'" >
31+ <Target
32+ Name =" _FSharpAnalyzerAfterBuild"
33+ DependsOnTargets =" _SetupFSharpAnalyzerProjectOptions;CoreCompile"
34+ AfterTargets =" AfterBuild"
35+ Condition =" '$(RunAnalyzers)' == 'true'" >
2936 <Error Condition =" $(FSharpAnalyzersOtherFlags) == ''" Text =" A property FSharpAnalyzersOtherFlags should exists with all the analyzer cli arguments!" />
30- <!--
31- Question: Should we only execute this target if FscCommandLineArgs is not empty?
32- Argument for Incremental builds may skip CoreCompile if no files changed, so we don't want to run the analyzer in that case.
33- There may be a better way to detect if CoreCompile was skipped but this seems to work.
34- And if someone wants to run the analyzer without FscCommandLineArgs, they can run the AnalyzeFSharpProject target directly.
35- -->
3637 <PropertyGroup >
37- <_AnalyzerProjectOptions Condition =" '@(FscCommandLineArgs->Count())' != '0'" >--fsc-args " @(FscCommandLineArgs)" </_AnalyzerProjectOptions >
38+ <FSharpAnalyzers_AlwaysRunAfterBuild Condition =" $(FSharpAnalyzers_AlwaysRunAfterBuild) == '' and '@(FscCommandLineArgs->Count())' != '0'" >true</FSharpAnalyzers_AlwaysRunAfterBuild >
39+ <_FSharpAnalyzers_ProjectOptions Condition =" '@(FscCommandLineArgs->Count())' != '0'" >--fsc-args " @(FscCommandLineArgs)" </_FSharpAnalyzers_ProjectOptions >
3840 </PropertyGroup >
3941 <Exec
40- ContinueOnError =" true"
41- IgnoreExitCode =" true"
42- Condition =" '@(FscCommandLineArgs->Count())' != '0'"
43- Command =" dotnet fsharp-analyzers $(_AnalyzerProjectOptions) $(FSharpAnalyzersOtherFlags)" />
44-
42+ ContinueOnError =" $(FSharpAnalyzers_ContinueOnError)"
43+ Condition =" '$(FSharpAnalyzers_AlwaysRunAfterBuild)' == 'true'"
44+ Command =" $(FSharpAnalyzers_ExeHost) $(FSharpAnalyzers_Exe) $(_FSharpAnalyzers_ProjectOptions) $(FSharpAnalyzersOtherFlags)" />
4545 </Target >
46+
47+ <Target Name =" FSharpAnalyzerAfterBuild" DependsOnTargets =" _FSharpAnalyzerAfterBuild" />
4648</Project >
0 commit comments