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

Respect DOTNET_ROOT #225

Merged
merged 4 commits into from
Aug 22, 2023
Merged

Conversation

Forgind
Copy link
Member

@Forgind Forgind commented Aug 3, 2023

Per dotnet/format#1925 (comment) (see that issue for more context)

string dotnet_root = Environment.GetEnvironmentVariable("DOTNET_ROOT");
if (!string.IsNullOrEmpty(dotnet_root))
{
// DOTNET_ROOT can be a path to dotnet OR a path to the folder containing dotnet.
Copy link
Member

Choose a reason for hiding this comment

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

@YuliiaKovalova
Copy link
Contributor

@rainersigwald , this looks good to me.
Do you have any comments?

@rainersigwald
Copy link
Member

DOTNET_ROOT seems analogous to DiscoveryOptions.DeveloperConsole. Should we instead extend that concept and codepath to respect it (as well as the VS environment variables)?

@Forgind
Copy link
Member Author

Forgind commented Aug 9, 2023

DOTNET_ROOT seems analogous to DiscoveryOptions.DeveloperConsole. Should we instead extend that concept and codepath to respect it (as well as the VS environment variables)?

There are definitely some similarities. I don't think there's a lot of overlap, though, which would make it tricky to try to reuse too much code—DiscoveryOptions.DeveloperConsole is specifically intended to be for NetFx users of VS developer command prompts, a very specific scenario. Of note, the environment variables it checks for there (VSINSTALLDIR, VSCMD_VER, and VisualStudioVersion) are rather VS-specific and not relevant to the DotNetSdkLocationHelper.

So I guess I'm not entirely clear on what concrete changes you're proposing? Though as I was rooting (hehe) around, I did notice there's also a DOTNET_ROOT(x86), so I should probably take that into account as well even though no one (to my knowledge) has specifically requested that yet.

// Second, check for the DOTNET_ROOT(x86) environment variable, as it can be there, too.
if (dotnetPath is null)
{
string dotnet_root_x86 = Environment.GetEnvironmentVariable("DOTNET_ROOT(x86)");
Copy link
Contributor

Choose a reason for hiding this comment

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

Can't it be moved to a separate method as code starting from line 96?

@YuliiaKovalova
Copy link
Contributor

@baronfel , @rainersigwald any blockers for this one?

Copy link
Member

@JanKrivanek JanKrivanek left a comment

Choose a reason for hiding this comment

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

Looks good

{
continue;
filePath = realpath(filePath) ?? filePath;
Copy link
Member

Choose a reason for hiding this comment

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

Comment would be helpful here ('unwrapping symlinks' or so)

}

// Second, check for the DOTNET_ROOT(x86) environment variable, as it can be there, too.
if (dotnetPath is null)
Copy link
Member

Choose a reason for hiding this comment

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

Should this be filtered to only if we are currently in an x86 process? It feels weird to respect DOTNET_ROOT(x86) in an amd64/x64 process.

{
if (!isWindows)
dotnetPath = fullPathToDotnetFromRoot;
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 need realpath?

@YuliiaKovalova YuliiaKovalova merged commit fc92380 into microsoft:master Aug 22, 2023
2 checks passed
@Forgind Forgind deleted the use-dotnet-root branch August 22, 2023 16:09
YuliiaKovalova added a commit that referenced this pull request Aug 29, 2023
* Bump Microsoft.NET.Test.Sdk from 15.9.0 to 17.3.1 (#180)

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 15.9.0 to 17.3.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Commits](microsoft/vstest@v15.9.0...v17.3.1)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump xunit from 2.4.1 to 2.4.2 (#172)

Bumps [xunit](https://github.com/xunit/xunit) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/xunit/xunit/releases)
- [Commits](xunit/xunit@2.4.1...2.4.2)

---
updated-dependencies:
- dependency-name: xunit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump xunit.runner.visualstudio from 2.4.1 to 2.4.5 (#155)

Bumps [xunit.runner.visualstudio](https://github.com/xunit/visualstudio.xunit) from 2.4.1 to 2.4.5.
- [Release notes](https://github.com/xunit/visualstudio.xunit/releases)
- [Commits](https://github.com/xunit/visualstudio.xunit/commits)

---
updated-dependencies:
- dependency-name: xunit.runner.visualstudio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Shouldly from 4.0.3 to 4.1.0 (#187)

Bumps [Shouldly](https://github.com/shouldly/shouldly) from 4.0.3 to 4.1.0.
- [Release notes](https://github.com/shouldly/shouldly/releases)
- [Changelog](https://github.com/shouldly/shouldly/blob/master/BREAKING%20CHANGES.txt)
- [Commits](shouldly/shouldly@v4.0.3...4.1.0)

---
updated-dependencies:
- dependency-name: Shouldly
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Forgind <[email protected]>

* Bump Microsoft.VisualStudio.Setup.Configuration.Interop (#186)

Bumps Microsoft.VisualStudio.Setup.Configuration.Interop from 1.16.30 to 3.3.2180.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Setup.Configuration.Interop
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Microsoft.VisualStudio.SDK.EmbedInteropTypes

Bumps Microsoft.VisualStudio.SDK.EmbedInteropTypes from 15.0.21 to 15.0.36.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.SDK.EmbedInteropTypes
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>

* Enabling CodeQL (#190)

Enables CodeQL in build pipeline

* Update xml doc comments (#193)

Update xml doc comments

* Bump Shouldly from 4.1.0 to 4.2.1

Bumps [Shouldly](https://github.com/shouldly/shouldly) from 4.1.0 to 4.2.1.
- [Release notes](https://github.com/shouldly/shouldly/releases)
- [Changelog](https://github.com/shouldly/shouldly/blob/master/BREAKING%20CHANGES.txt)
- [Commits](shouldly/shouldly@4.1.0...4.2.1)

---
updated-dependencies:
- dependency-name: Shouldly
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump Microsoft.VisualStudio.Setup.Configuration.Interop

Bumps Microsoft.VisualStudio.Setup.Configuration.Interop from 3.3.2180 to 3.6.2115.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Setup.Configuration.Interop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump Nerdbank.GitVersioning from 3.5.107 to 3.6.133

Bumps [Nerdbank.GitVersioning](https://github.com/dotnet/Nerdbank.GitVersioning) from 3.5.107 to 3.6.133.
- [Release notes](https://github.com/dotnet/Nerdbank.GitVersioning/releases)
- [Commits](dotnet/Nerdbank.GitVersioning@v3.5.107...v3.6.133)

---
updated-dependencies:
- dependency-name: Nerdbank.GitVersioning
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Bump Microsoft.NET.Test.Sdk from 17.3.1 to 17.6.2

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.3.1 to 17.6.2.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)
- [Commits](microsoft/vstest@v17.3.1...v17.6.2)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* Update Releasing_MSBuildLocator.md

* Bump xunit.runner.visualstudio from 2.4.5 to 2.5.0 (#223)

Bumps [xunit.runner.visualstudio](https://github.com/xunit/visualstudio.xunit) from 2.4.5 to 2.5.0.
- [Release notes](https://github.com/xunit/visualstudio.xunit/releases)
- [Commits](xunit/visualstudio.xunit@v2.4.5...2.5.0)

---
updated-dependencies:
- dependency-name: xunit.runner.visualstudio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Microsoft.NET.Test.Sdk from 17.6.2 to 17.6.3 (#221)

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.6.2 to 17.6.3.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)
- [Commits](microsoft/vstest@v17.6.2...v17.6.3)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump xunit from 2.4.2 to 2.5.0 (#222)

Bumps [xunit](https://github.com/xunit/xunit) from 2.4.2 to 2.5.0.
- [Commits](xunit/xunit@2.4.2...2.5.0)

---
updated-dependencies:
- dependency-name: xunit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Make Unregister a no-op Fixes #77 (#204)

* Make Unregister a no-op

* Change comment

* Specify not to show Unregister

* Sort usings

---------

Co-authored-by: Forgind <[email protected]>

* Validate dotnet executable exists (#202)

* Validate dotnet executable exists

* PR comment

* Update src/MSBuildLocator/DotNetSdkLocationHelper.cs

Co-authored-by: Ladi Prosek <[email protected]>

* Simplify logic

Also avoids an unnecessary File.Exists check on Windows

---------

Co-authored-by: Forgind <[email protected]>
Co-authored-by: Ladi Prosek <[email protected]>

* Bump Microsoft.NET.Test.Sdk from 17.6.3 to 17.7.0 (#226)

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.6.3 to 17.7.0.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)
- [Commits](microsoft/vstest@v17.6.3...v17.7.0)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Microsoft.VisualStudio.Setup.Configuration.Interop (#227)

Bumps Microsoft.VisualStudio.Setup.Configuration.Interop from 3.6.2115 to 3.7.2175.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Setup.Configuration.Interop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Respect DOTNET_ROOT (#225)

* Respect DOTNET_ROOT

* DOTNET_ROOT is a folder. Also, DOTNET_ROOT(x86)

* PR Feedback

---------

Co-authored-by: Forgind <[email protected]>

* Bump Microsoft.NET.Test.Sdk from 17.7.0 to 17.7.1 (#228)

Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.7.0 to 17.7.1.
- [Release notes](https://github.com/microsoft/vstest/releases)
- [Changelog](https://github.com/microsoft/vstest/blob/main/docs/releases.md)
- [Commits](microsoft/vstest@v17.7.0...v17.7.1)

---
updated-dependencies:
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* upgrade core version to net6.0  (#231)

* upgrade framework version + fix issue with path extraction from environment variable

* fix review comments

* Fix resolving hostfxr for Mac OS and Linux envs (#230)

* add setting of "DOTNET_HOST_PATH" env variable (#235)

* Fix hostfx resolving issue in some Mac machines (#236)

* Add diagnostic logging, and address issues in the code.

* Update the fix:

1, it turns out DotnetPath is the folder path. It just sets DOTNET_HOST_PATH incorrectly
  DOTNET_HOST_PATH is a file path, which is different than DOTNET_ROOT

 2, Fix DOTNET_HOST_PATH handling, which broke the application when it sets to a folder.

* use StringComparison.OrdinalIgnoreCase to compare file name

maybe should use platform dependent comparison, but it looks like the rest of code is doing that.

* do not create new instance on each call.

* Further hardern the logic inside HostFxrResolver

Adds more logging and handles empty folder.

* delete unnecessary logging.

* Additional logging.

* Throw errors instead of logging it.

---------

Co-authored-by: Lifeng Lu <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Forgind <[email protected]>
Co-authored-by: MichalPavlik <[email protected]>
Co-authored-by: Forgind <[email protected]>
Co-authored-by: Ladi Prosek <[email protected]>
Co-authored-by: Lifeng Lu <[email protected]>
Co-authored-by: Lifeng Lu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants