Melhorias na Gestão de Pacotes no WMF 5.1

Seguem-se as correções efetuadas no WMF 5.1:

Alias de Versão

Cenário: se tiver a versão 1.0 e 2.0 de um pacote, P1, instalada no seu sistema e quiser desinstalar a versão 1.0, executaria Uninstall-Package -Name P1 -Version 1.0 e esperaria que a versão 1.0 fosse desinstalada após executar o cmdlet. No entanto, o resultado é que a versão 2.0 é desinstalada.

Isto ocorre porque o -Version parâmetro é um alias do -MinimumVersion parâmetro. Quando PackageManagement procura um pacote qualificado com a versão mínima de 1.0, devolve a versão mais recente. Este comportamento é esperado em casos normais porque encontrar a versão mais recente é normalmente o resultado pretendido. No entanto, não deve aplicar-se ao Uninstall-Package caso.

Solução: removeu -Version totalmente o alias em PackageManagement (também conhecido como OneGet) e PowerShellGet.

Vários pedidos de arranque do fornecedor NuGet

Cenário: quando executa Find-Module ou Install-Module outros cmdlets PackageManagement no seu computador pela primeira vez, a PackageManagement tenta iniciar o arranque do fornecedor NuGet. Isto acontece porque o fornecedor do PowerShellGet também utiliza o fornecedor NuGet para transferir módulos do PowerShell. Em seguida, a PackageManagement pede ao utilizador permissão para instalar o fornecedor NuGet. Depois de o utilizador selecionar "sim" para o bootstrapping, será instalada a versão mais recente do fornecedor NuGet.

No entanto, em alguns casos, quando tem uma versão antiga do fornecedor NuGet instalada no seu computador, a versão mais antiga do NuGet por vezes é carregada primeiro na sessão do PowerShell (essa é a condição race em PackageManagement). No entanto, o PowerShellGet requer que a versão posterior do fornecedor NuGet funcione, pelo que o PowerShellGet pede ao PackageManagement para iniciar novamente o fornecedor NuGet. Isto resulta em vários pedidos de arranque do fornecedor NuGet.

Solução: no WMF5.1, PackageManagement carrega a versão mais recente do fornecedor NuGet para evitar vários pedidos de arranque do fornecedor NuGet.

Também pode resolver este problema ao eliminar manualmente a versão antiga do fornecedor NuGet (NuGet-Anycpu.exe) se existir de $env:ProgramFiles\PackageManagement\ProviderAssemblies $env:LOCALAPPDATA\PackageManagement\ProviderAssemblies

Suporte para PackageManagement apenas em computadores com acesso à Intranet

Cenário: para o cenário empresarial, as pessoas estão a trabalhar num ambiente onde não existe acesso à Internet, mas apenas intranet. A PackageManagement não suportava este caso no WMF 5.0.

Cenário: no WMF 5.0, o PackageManagement não suportava computadores com acesso apenas à Intranet (mas não à Internet).

Solução: no WMF 5.1, pode seguir estes passos para permitir que os computadores da Intranet utilizem PackageManagement:

  1. Transfira o fornecedor NuGet com outro computador que tenha uma ligação à Internet com Install-PackageProvider -Name NuGet.

  2. Localize o fornecedor NuGet em ou $env:ProgramFiles\PackageManagement\ProviderAssemblies\nuget$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies\nuget.

  3. Copie os binários para uma localização de partilha de rede ou pasta à qual o computador da Intranet possa aceder e, em seguida, instale o fornecedor NuGet com Install-PackageProvider -Name NuGet -Source <Path to folder>.

Melhorias no registo de eventos

Quando instala pacotes, está a alterar o estado do computador. No WMF 5.1, PackageManagement regista agora eventos no registo de eventos do Windows para Install-Package, Uninstall-Packagee Save-Package atividades. O Registo de eventos é o mesmo que para o PowerShell, ou seja, Microsoft-Windows-PowerShell, Operational.

Suporte para autenticação básica

No WMF 5.1, PackageManagement suporta a localização e instalação de pacotes a partir de um repositório que requer autenticação básica. Pode fornecer as suas credenciais aos Find-Package cmdlets e Install-Package . Por exemplo:

Find-Package -Source <SourceWithCredential> -Credential (Get-Credential)

Suporte para utilizar o PackageManagement por trás de um proxy

No WMF 5.1, PackageManagement utiliza agora novos parâmetros -ProxyCredential de proxy e -Proxy. Com estes parâmetros, pode especificar o URL do proxy e as credenciais para cmdlets PackageManagement. Por predefinição, são utilizadas as definições de proxy do sistema. Por exemplo:

Find-Package -Source https://www.nuget.org/api/v2/ -Proxy http://www.myproxyserver.com -ProxyCredential (Get-Credential)