Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Look for dotnet on path if it is not in the default install directory #1813

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/app/Fake.DotNet.Cli/DotNet.fs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,16 @@ let mutable DefaultDotNetCliDir =
/// ## Parameters
///
/// - 'dotnetCliDir' - dotnet cli install directory
let private dotnetCliPath dotnetCliDir = dotnetCliDir @@ (if Environment.isUnix then "dotnet" else "dotnet.exe")
let private dotnetCliPath dotnetCliDir =
let defaultCliPath = dotnetCliDir @@ (if Environment.isUnix then "dotnet" else "dotnet.exe")
match File.Exists defaultCliPath with
| true -> defaultCliPath
| _ ->
Process.tryFindFileOnPath "dotnet"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this work on windows? I can never remember this.

The only other question is if we need to know when we take this path, because we need to ensure that this is the correct version? (or should we implicitly assume the dotnet installer script did this check?)...

Copy link
Contributor Author

@severisv severisv Mar 8, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It works on Windows, that's what I use :)

When it comes to versioning, I believe dotnet CLI chooses the appropriate SDK based on global.json. If there is no global.json present it will select the newest one.

While there is a risk of getting the wrong SDK-version, I would say it is ultimately the responsibility of the consumer to specify either a direct path to the correct SDK or an SDK-version in global.json (that she knows is installed).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

global.json is highly frustrating for developers when switching between projects. So I personally don't use it. Instead I trust FAKE to ensure it uses the correct version when I specify the version explicitly... (Honestly, I'm OK with using a different version locally, as long as CI checks against a specific version)

But I'll take a look, thanks for the change!

|> function
| Some dotnet when File.Exists dotnet -> dotnet
| _ -> failwithf "Can't find dotnet CLI. Looked in %s and on PATH" defaultCliPath


/// Get .NET Core SDK download uri
let private getGenericDotNetCliInstallerUrl branch installerName =
Expand Down