Open NogginBops opened 2 years ago
Welcome to the FAKE community! Thank you so much for creating your first issue and therefore improving the project!
Nice catch. Maybe we should hardcoded the program file into each paths or we can write a small logic:
pseudo code
// wont work because visualStudioVersion can be none
let getProgramFilesPath visualStudioVersion =
if (float visualStudioVersion) < 17.0
then Environment.ProgramFilesX86
else Environment.ProgramFiles
let findOnVSPathsThenSystemPath =
let visualStudioVersion = Environment.environVarOrNone "VisualStudioVersion"
Environment.ProgramFiles
let vsVersionPaths =
let dict = toDict knownMSBuildEntries
defaultArg (visualStudioVersion |> Option.bind dict.TryFind) getAllKnownPaths
|> List.map (fun path -> (getProgramFilesPath visualStudioVersion) @@ path)
let vsWhereVersionPaths =
let orderedVersions = MSBuildExeFromVsWhere.getOrdered()
let all = orderedVersions |> List.collect (fun e -> e.Paths)
let dict = toDict orderedVersions
defaultArg (visualStudioVersion |> Option.bind dict.TryFind) all
let fullList = vsWhereVersionPaths @ vsVersionPaths |> List.distinct
source:
Thanks for reporting! Would anyone like to send a PR for this issue?
@yazeedobaid I am willing to transform my pseudo code into something useful.
@aloisdg thanks
This code only looks in the
Program Files (x86)
folder for Visual Studio installations, but vs2022 installs inProgram Files
, so MSBuild provided with vs2022 will not be picked up byFake.DotNet.MSBuild
.https://github.com/fsprojects/FAKE/blob/e313c3b25a2c3d683d0ceed735a1a2b9b15a4fb4/src/app/Fake.DotNet.MSBuild/MSBuild.fs#L236-L249