@@ -186,27 +186,23 @@ module internal Salsa =
186
186
187
187
/// Compute the Flags and Sources
188
188
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
206
199
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 }
210
206
211
207
let CrackProject ( projectFileName , configuration , platform ) =
212
208
0 commit comments