Currently, dotnet will crash with an `ArgumentNullException` if `USERPROFILE`
(Windows) or `HOME` (macOS and Linux) is not set in the environment. This
is because there is a missing null check after retrieving the environment
variable's value. Additionally, if either variable is set to an empty string,
a `.dotnet` directory is created in the current directory where dotnet is being
run.
This commit fixes this by printing a graceful error informing the user the home
directory could not be determined and to set `DOTNET_CLI_HOME` to the directory
to use. This variable will be respected before `USERPROFILE` or `HOME`. It is
likely that CI environments where `HOME` is not set can use `DOTNET_CLI_HOME`
to specify a local temporary location; by using this variable rather than
setting `HOME`, it is guaranteed to only affect dotnet.
It was discussed that we should perhaps fallback to some temporary location if
the home directory could not be determined, but NuGet currently requires `HOME`
to be set to work. Because of this, it was decided that we should just handle
this case gracefully and provide a way for users to override the home directory
without relying on `USERPROFILE`/`HOME` entirely.
Closes#8053.
* remove reference to TestAssetsManager in dotnet-add-reference
* remove TestAssetsManager dependency from dotnet-build
* remove TAM ref from dotnet-list-reference
* remove TAM dependency from dotnet-msbuild
* remove TAM dependency from ProjectJsonMigration tests
* remove TAM dependency from dotnet.Tests
* remove TAM dependency from dotnet-new.Tests
* remove TAM from dotnet-pack.Tests
* remove TAM from dotnet-publish.Tests
* remove TAM from dotnet-restore.Tests
* remove TAM dependency from dotnet-remove-reference.Tests
* remove TAM dependency from dotnet-run.Tests
* remove TAM dependency from dotnet-test.Tests
* remove TAM dependency from Microsoft.DotNet.Cli.Utils.Tests
* remove TAM from TestBase
* remove TAM
* remove newly introduced dependency on TAM
* Rebase
* Remove Multi-Project Validator
* Remove projectmodelserver tests
* Enable test package creation
* Incremental test restore
* WiP
* Enable Test Asset Project restore
* Build Test Assets & Restore Test Projects
* Build Test projects
* Enable Test Execution
also moves Test Targets to a well-known CLI Version [Stage 2]
* Pass throuh existing telemetry profile
* 2-space tabs
* Revert TestTargets.cs
* WiP PR feedback
* Refactoring
* Fix naming of RestoreTestAssetPackages
* DotNetTest task
* Fix merge issue
* ExecuteWithCapturedOutput
MSBuild considers StdErr output to be failures. This causes output of any test command which is expected to produce an error to be swallowed in the test.
* Workaround for always-on tracing functionality in dotnet-test
* Fix Path Separator Windows/Unix
* Seperate package build from pack
* Windows Pathing issues
* PR Feedback
* Workaround for msbuild #773https://github.com/Microsoft/msbuild/issues/773