You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This line in NugetLightRequest.GetCredsFromCredProvider incorrectly uses $HOME instead of %HOME%as required by Environment.ExpandEnvironmentVariable(). This causes the credential provider to not be found
// If running Unix
path = "$HOME/.nuget/plugins/netcore/CredentialProvider.Microsoft/CredentialProvider.Microsoft.dll";
Longer Version
Running Red Hat Enterprise Linux release 8.7, PowerShell 7.3.1, PackageManagement 1.4.8.1, PowerShellGet 2.2.5.
Trying to use an Azure Artifacts feed with PowerShell. Installed the credential provider, setup my PS-Repository, etc. (Got all this working on Windows no problem).
When I run Install-Module ModuleFromMyFeed -Debug I get output that includes this:
DEBUG: 00:00:01.3022327 Calling 'GetCredsFromCredProvider' on https://pkgs.dev.azure.com:443/myorg/_packaging/myfeed/nuget/v2/FindPackagesById()?id='ModuleFromMyFeed'&$skip=%7B0%7D&$top=%7B1%7D
DEBUG: 00:00:01.3028816 Calling credential provider installed at
Could not execute because the specified command or file was not found.
Possible reasons for this include:
* You misspelled a built-in dotnet command.
* You intended to execute a .NET program, but dotnet--V does not exist.
* You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
Note the line for Calling credential provider installed at. There is nothing listed after the at. And note how dotnet thinks I'm trying to run dotnet --V.
If you read through the code in NugetLightRequest.GetCredsFromCredProvider you'll see it first looks for NUGET_PLUGIN_PATHS, which I do not have defined. That fails so it tries to look for the provider at "$HOME/.nuget/plugins/netcore/CredentialProvider.Microsoft/CredentialProvider.Microsoft.dll". It passes that string to Environment.ExpandEnvironmentVariables(). But does not work. Because Environment.ExpandEnvironmentVariables expects variables to be in the format %VAR%, not $VAR. See this github issue. So the variable is not expanded, so the File.Exists() check fails. That leaves credProviderPath blank, so the code then tries to run dotnet -V verbose -U <url>. Which gives the error we see in the output.
The Fix
In the source code switch $HOME to %HOME%.
The workaround.
Set the environment variable NUGET_PLUGIN_PATHS to the full path of CredentialProvider.Microsoft.dll. For example, $env:NUGET_PLUGIN_PATHS = "/home/username/.nuget/plugins/netcore/CredentialProvider.Microsoft/CredentialProvider.Microsoft.dll"
This does work for me.
The text was updated successfully, but these errors were encountered:
TLDR:
This line in
NugetLightRequest.GetCredsFromCredProvider
incorrectly uses$HOME
instead of%HOME%
as required byEnvironment.ExpandEnvironmentVariable()
. This causes the credential provider to not be foundLonger Version
Running Red Hat Enterprise Linux release 8.7, PowerShell 7.3.1, PackageManagement 1.4.8.1, PowerShellGet 2.2.5.
Trying to use an Azure Artifacts feed with PowerShell. Installed the credential provider, setup my PS-Repository, etc. (Got all this working on Windows no problem).
When I run
Install-Module ModuleFromMyFeed -Debug
I get output that includes this:Note the line for
Calling credential provider installed at
. There is nothing listed after theat
. And note howdotnet
thinks I'm trying to rundotnet --V
.If you read through the code in NugetLightRequest.GetCredsFromCredProvider you'll see it first looks for
NUGET_PLUGIN_PATHS
, which I do not have defined. That fails so it tries to look for the provider at"$HOME/.nuget/plugins/netcore/CredentialProvider.Microsoft/CredentialProvider.Microsoft.dll"
. It passes that string toEnvironment.ExpandEnvironmentVariables()
. But does not work. BecauseEnvironment.ExpandEnvironmentVariables
expects variables to be in the format%VAR%
, not$VAR
. See this github issue. So the variable is not expanded, so theFile.Exists()
check fails. That leavescredProviderPath
blank, so the code then tries to rundotnet -V verbose -U <url>
. Which gives the error we see in the output.The Fix
In the source code switch
$HOME
to%HOME%
.The workaround.
Set the environment variable
NUGET_PLUGIN_PATHS
to the full path ofCredentialProvider.Microsoft.dll
. For example,$env:NUGET_PLUGIN_PATHS = "/home/username/.nuget/plugins/netcore/CredentialProvider.Microsoft/CredentialProvider.Microsoft.dll"
This does work for me.
The text was updated successfully, but these errors were encountered: