Skip to content

Commit bbbf958

Browse files
committed
Fix traversal project loading by correcting IsTraversal and DesignTimeCapable active patterns
1 parent 4c43ab0 commit bbbf958

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

src/Ionide.ProjInfo/Library.fs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Ionide.ProjInfo
1+
namespace Ionide.ProjInfo
22

33
open System
44
open System.Collections.Generic
@@ -358,16 +358,25 @@ module ProjectLoader =
358358
| Other of ProjectInstance
359359

360360
let (|IsTraversal|_|) (p: ProjectInstance) =
361-
match p.GetProperty "IsTraversal" with
362-
| null -> None
363-
| p when Boolean.TryParse(p.EvaluatedValue) = (true, false) -> None
364-
| _ -> Some()
361+
let prop = p.GetProperty "IsTraversal"
362+
if isNull prop then
363+
None
364+
else
365+
match Boolean.TryParse(prop.EvaluatedValue) with
366+
| true, true -> Some()
367+
| _ -> None
365368

366369
let (|DesignTimeCapable|_|) (targets: string seq) (p: ProjectInstance) =
367-
if Seq.forall p.Targets.ContainsKey targets then
368-
Some()
370+
// https://github.com/dotnet/project-system/blob/main/docs/design-time-builds.md#diagnosing-design-time-builds
371+
let designTimeBuildTargets = p.GetProperty "DesignTimeBuildTargets"
372+
if not (isNull designTimeBuildTargets) && not (String.IsNullOrWhiteSpace designTimeBuildTargets.EvaluatedValue) then
373+
Some()
369374
else
370-
None
375+
let missing = targets |> Seq.filter (fun t -> not (p.Targets.ContainsKey t)) |> Seq.toList
376+
if List.isEmpty missing then
377+
Some()
378+
else
379+
None
371380

372381
let internal projectLoaderLogger = lazy (LogProvider.getLoggerByName "ProjectLoader")
373382

@@ -437,7 +446,7 @@ module ProjectLoader =
437446
member this.Parameters: string = ""
438447

439448
member this.Parameters
440-
with set (v: string): unit = printfn "v"
449+
with set (v: string): unit = ()
441450

442451
member this.Shutdown() : unit = ()
443452
member this.Verbosity: LoggerVerbosity = LoggerVerbosity.Detailed
@@ -655,10 +664,7 @@ module ProjectLoader =
655664
"CoreCompile"
656665
|]
657666
else
658-
[|
659-
yield! designTimeBuildTargetsCore
660-
"DispatchToInnerBuilds"
661-
|]
667+
designTimeBuildTargetsCore
662668

663669
let setLegacyMsbuildProperties isOldStyleProjFile =
664670
match LegacyFrameworkDiscovery.msbuildBinary.Value with

0 commit comments

Comments
 (0)