@@ -186,27 +186,23 @@ module internal Salsa =
186186
187187 /// Compute the Flags and Sources
188188 let GetFlagsAndSources ( project : Project , host : HostCompile ) : BuildFlags =
189- let result =
190- use xx = host.CaptureSourcesAndFlagsWithoutBuildingForABit()
191- project.IsBuildEnabled <- true
192-
193- let loggers = seq { yield ( new Microsoft.Build.Logging.ConsoleLogger( LoggerVerbosity.Detailed) :> ILogger ) }
194-
195- let r = project.Build( " Compile" , loggers)
196- if not ( r) then
197- printfn " MSBuild result: %A " r
198- printfn " %s " project.FullPath
199- System.Diagnostics.Debug.Assert( false , " things are about to fail, as MSBuild failed; it would behoove you to turn on MSBuild tracing" )
200- let capturedFlags , capturedSources = host.Results
201- { flags = capturedFlags |> Array.toList
202- sources = capturedSources |> Array.toList }
203- let Canonicalize ( fileName : string ) =
204- if System.IO.Path.IsPathRooted( fileName) then
205- System.IO.Path.GetFullPath( fileName)
189+ use _ = host.CaptureSourcesAndFlagsWithoutBuildingForABit()
190+ project.IsBuildEnabled <- true
191+ // Always invoke CoreCompile directly (host object registered there)
192+ let loggers = seq { yield ( new Microsoft.Build.Logging.ConsoleLogger( LoggerVerbosity.Minimal) :> ILogger ) }
193+ let _ = project.Build( " CoreCompile" , loggers) |> ignore
194+ let capturedFlags , capturedSources = host.Results
195+ let raw =
196+ if isNull capturedFlags || isNull capturedSources then
197+ // Fallback if the host wasn't invoked (e.g. up-to-date skip or custom targets)
198+ GetFlagsAndSourcesFallback project
206199 else
207- System.IO.Path.GetFullPath( System.IO.Path.Combine( System.IO.Path.GetDirectoryName( project.FullPath), fileName))
208- { flags = result.flags
209- sources = result.sources |> List.map Canonicalize }
200+ { flags = capturedFlags |> Array.toList; sources = capturedSources |> Array.toList }
201+ // Canonicalize source paths
202+ let canonicalize ( fileName : string ) =
203+ if Path.IsPathRooted( fileName) then Path.GetFullPath( fileName)
204+ else Path.GetFullPath( Path.Combine( Path.GetDirectoryName( project.FullPath), fileName))
205+ { flags = raw.flags; sources = raw.sources |> List.map canonicalize }
210206
211207 let CrackProject ( projectFileName , configuration , platform ) =
212208
0 commit comments