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