Problemas conhecidos com o NuGet
Esses são os problemas comuns conhecidos do NuGet relatados com mais frequência. Se você estiver tendo problemas para instalar o NuGet ou gerenciar pacotes, veja esses problemas conhecidos e suas soluções.
Observação
A partir do NuGet 4.0, problemas conhecidos fazem parte das respectivas notas de versão.
Configurações da Auditoria do NuGet podem não ser aplicadas corretamente para projetos usando packages.config no Visual Studio 17.10
O suporte à Auditoria do NuGet foi adicionado para projetos packages.config a partir do NuGet 6.10 e do Visual Studio 17.10. Informações sobre como configurar a Auditoria do NuGet podem ser encontradas em nossos documentos sobre pacotes de auditoria.
Problema:
Se dois ou mais projetos usando packages.config na solução usarem o mesmo nome de projeto, então a Auditoria do NuGet escolherá um e usará as mesmas configurações de Auditoria do NuGet para ambos os projetos.
O problema de rastreamento para remover essa limitação está disponível no GitHub.
Solução alternativa:
Se todos os projetos com o mesmo nome usarem os mesmos valores de configuração, não haverá diferença funcional quando o NuGet restaurar um projeto usando a configuração de um projeto diferente.
O NuGet.exe não tem essa limitação, portanto, você pode fazer download do NuGet.exe e executar NuGet.exe restore
em sua solução para verificar se os avisos de auditoria do NuGet são diferentes na linha de comando do que o Visual Studio está relatando.
Se for viável renomear os projetos para que eles tenham nomes de projeto diferentes, esse cenário de problema não será encontrado.
Problema:
Quando usamos o comando a seguir para armazenar as credenciais, podemos acabar duplicando a criptografia do Token de Acesso Pessoal.
$PAT = "Seu token de acesso pessoal" $Feed = "Sua url" .\nuget.exe sources add -Name Test -Source $Feed -UserName $UserName -Password $PAT
Solução alternativa:
Armazenar senhas em texto não criptografado usando a opção -StorePasswordInClearText.
Problema:
No NuGet 3.4 e 3.4.1, ao usar o suplemento do NuGet, nenhuma origem é relatada como disponível e você não consegue adicionar novas origens na janela de configuração. O resultado é semelhante à imagem abaixo:
O arquivo NuGet.Config
na pasta %AppData%\NuGet\
(Windows) ou ~/.nuget/
(Mac/Linux) foi esvaziado acidentalmente. Para corrigir isso: feche o Visual Studio (no Windows se aplicável), exclua o arquivo NuGet.Config
e tente realizar a operação novamente. O NuGet gerará um novo NuGet.Config
e você poderá continuar.
Problema:
No NuGet 2.7 ou superior, quando você tenta instalar qualquer pacote que contém as referências de assembly, receberá a mensagem de erro “A cadeia de caracteres de entrada não estava no formato correto.”, como mostrado abaixo:
install-package log4net
Installing 'log4net 2.0.0'.
Successfully installed 'log4net 2.0.0'.
Adding 'log4net 2.0.0' to Tyson.OperatorUpload.
Install failed. Rolling back...
install-package : Input string was not in a correct format.
At line:1 char:1
install-package log4net
~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : NotSpecified: (:) [Install-Package], FormatException
FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
Isso é causado pela biblioteca de tipos para o componente COM de VSLangProj.dll
cujo registro está sendo cancelado no sistema. Isso pode acontecer, por exemplo, quando você tem duas versões do Visual Studio instaladas lado a lado e desinstala a versão mais antiga. Isso pode inadvertidamente cancelar o registro das biblioteca COM acima.
Solução::
Execute este comando de um prompt com privilégios elevados para registrar novamente a biblioteca de tipos para VSLangProj.dll
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Se o comando falhar, verifique se o arquivo existe no local.
Para obter mais informações sobre esse erro, consulte [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609")
.
O problema: você está usando o VS 2012 RTM. Ao atualizar os pacotes NuGet, você recebe esta mensagem: "Não foi possível concluir a desinstalação de um ou mais pacotes". e você será solicitado a reiniciar o Visual Studio. Após a reinicialização do VS, você receberá erros de build estranhos.
A causa é que certos arquivos dos pacotes antigo estão bloqueados por um processo do MSBuild em segundo plano. Mesmo depois de reiniciar o VS, o processo de MSBuild em segundo plano ainda usa os arquivos nos pacotes antigos, causando falhas de build.
A correção é instalar a Atualização do VS 2012, por exemplo, VS 2012 Atualização 2.
Fazendo upgrade para o NuGet mais recente de uma versão mais antiga causa um erro de verificação de assinatura
Se você estiver executando o VS 2010 SP1, poderá encontrar a seguinte mensagem de erro ao tentar fazer upgrade no NuGet se tiver uma versão mais antiga instalada.
Ao exibir os logs, você poderá ver uma menção de um SignatureMismatchException
.
Para evitar que isso ocorra, há um hotfix do Visual Studio 2010 SP1 que você pode instalar. Outra opção é usar a solução alternativa de simplesmente desinstalar o NuGet (enquanto o Visual Studio é executado como Administrador) e, em seguida, instalá-lo da Galeria de Extensões do VS. Consulte https://support.microsoft.com/kb/2581019 para obter mais informações.
O Console do Gerenciador de Pacotes gera uma exceção quando o suplemento do Reflector Visual Studio também é instalado.
Ao executar o console do Gerenciador de Pacotes, você pode encontrar a seguinte mensagem de exceção se você tiver o suplemento do Reflector VS instalado.
The following error occurred while loading the extended type data file:
Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2950) :
Error in type "System.Security.AccessControl.ObjectSecurity":
Exception: Cannot convert the "Microsoft.PowerShell.Commands.SecurityDescriptorCommandsBase"
value of type "System.String" to type "System.Type".
System.Management.Automation.ActionPreferenceStopException:
Command execution stopped because the preference variable "ErrorActionPreference" or common parameter
is set to Stop: Unable to find type
or
System.Management.Automation.CmdletInvocationException: Could not load file or assembly 'Scripts\nuget.psm1' or one of its dependencies. <br />The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) ---> System.IO.FileLoadException: Could not load file or <br />assembly 'Scripts\nuget.psm1' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) <br />---> System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.Combine(String path1, String path2)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.<AssemblyPaths>d__1.MoveNext()
at Microsoft.VisualStudio.Platform.VsAppDomainManager.InnerResolveHandler(String name)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.ResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
--- End of inner exception stack trace ---
at Microsoft.PowerShell.Commands.ModuleCmdletBase.LoadBinaryModule(Boolean trySnapInName, String moduleName, String fileName, <br />Assembly assemblyToLoad, String moduleBase, SessionState ss, String prefix, Boolean loadTypes, Boolean loadFormats, Boolean& found)
at Microsoft.PowerShell.Commands.ModuleCmdletBase.LoadModuleNamedInManifest(String moduleName, String moduleBase, <br />Boolean searchModulePath, <br />String prefix, SessionState ss, Boolean loadTypesFiles, Boolean loadFormatFiles, Boolean& found)
at Microsoft.PowerShell.Commands.ModuleCmdletBase.LoadModuleManifest(ExternalScriptInfo scriptInfo, ManifestProcessingFlags <br />manifestProcessingFlags, Version version)
at Microsoft.PowerShell.Commands.ModuleCmdletBase.LoadModule(String fileName, String moduleBase, String prefix, SessionState ss, <br />Boolean& found)
at Microsoft.PowerShell.Commands.ImportModuleCommand.ProcessRecord()
at System.Management.Automation.Cmdlet.DoProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
--- End of inner exception stack trace ---
at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at System.Management.Automation.Runspaces.Pipeline.Invoke()
at NuGetConsole.Host.PowerShell.Implementation.PowerShellHost.Invoke(String command, Object input, Boolean outputResults)
at NuGetConsole.Host.PowerShell.Implementation.PowerShellHostExtensions.ImportModule(PowerShellHost host, String modulePath)
at NuGetConsole.Host.PowerShell.Implementation.PowerShellHost.LoadStartupScripts()
at NuGetConsole.Host.PowerShell.Implementation.PowerShellHost.Initialize()
at NuGetConsole.Implementation.Console.ConsoleDispatcher.Start()
at NuGetConsole.Implementation.PowerConsoleToolWindow.MoveFocus(FrameworkElement consolePane)
Entramos em contato com o autor do suplemento em busca de negociarmos uma resolução.
Atualização: verificamos que a versão mais recente do Reflector, 6.5, não causa mais essa exceção no console.
Você pode encontrar esses erros ao tentar abrir o Console do Gerenciador de Pacotes:
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2977) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2984) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2991) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2998) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3005) : Error in type "System.Security.AccessControl.ObjectSecurity": Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.
The term 'Get-ExecutionPolicy' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Nesse caso, siga a solução discutida em StackOverflow para corrigi-los.
A caixa de diálogo Adicionar referência da biblioteca de pacote gerará uma exceção se a solução contiver um projeto do InstallShield Limited Edition
Nós identificamos que, se sua solução contiver um ou mais projetos do InstallShield Limited Edition, a caixa de diálogo Adicionar referência de biblioteca de pacote gerará uma exceção ao ser aberto. Atualmente, ainda não há nenhuma solução alternativa, exceto remover os projetos do InstallShield ou descarregá-los.
O botão Desinstalar está esmaecido? O NuGet exige privilégios de administrador para instalar/desinstalar
Se você tentar desinstalar o NuGet por meio do Gerenciador de Extensões do Visual Studio, poderá perceber que o botão Desinstalar está desabilitado. O NuGet exige privilégios de administrador para ser instalado e desinstalado. Reinicie o Visual Studio como administrador para desinstalar a extensão. O NuGet não requer acesso de administrador para usá-lo.
O NuGet requer o runtime do Powershell 2.0. O Windows XP, por padrão, não têm o Powershell 2.0. Você pode baixar o runtime do Powershell 2.0 em Download do PowerShell 2.0. Após a instalação, reinicie o Visual Studio e será possível abrir o Console do Gerenciador de Pacotes.
Se você tiver instalado o Visual Studio 2010 SP1 Beta, poderá perceber que, se você deixar o Console do Gerenciador de Pacotes abertos e fechar o Visual Studio, ele falhará. Este é um problema conhecido do Visual Studio e será corrigido na versão SP1 RTM. Por enquanto, basta ignorar a falha ou desinstalar o SP1 Beta, se possível.
Se você instalou pacotes compilados com uma versão de pré-lançamento do NuGet, poderá encontrar uma mensagem de erro dizendo “o elemento 'metadata' no namespace 'schemas.microsoft.com/packaging/2010/07/nuspec.xsd' tem um elemento filho inválido” ao executar a versão RTM do NuGet com esse projeto. Você precisa desinstalar e reinstalar cada pacote usando a versão RTM do NuGet.
Tentativa de instalar ou desinstalar resultou no erro "Não é possível criar um arquivo quando ele já existe."
Por algum motivo, as extensões do Visual Studio podem demonstrar certa estranheza se você tiver desinstalado a extensão do VSIX, mas alguns arquivos restaram. Para contornar este problema:
Sair do Visual Studio
Abra a pasta a seguir (ela pode estar em uma unidade diferente no seu computador)
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager<version>\
Exclua todos os arquivos com a extensão .deleteme.
Abra novamente o Visual Studio
Depois de seguir essas etapas, você deverá ser capaz de continuar.
Você pode obter o seguinte erro se instalar FluentNHibernate com o console do Gerenciador de Pacotes e, em seguida, compile seu projeto com “Análise de código” ativado.
Error 3 CA0058 : The referenced assembly
'NHibernate, Version=3.0.0.2001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'
could not be found. This assembly is required for analysis and was referenced by:
C:\temp\Scratch\src\MyProject.UnitTests\bin\Debug\MyProject.UnitTests.dll.
MyProject.UnitTests
Por padrão, FluentNHibernate requer NHibernate 3.0.0.2001. No entanto, por padrão, o NuGet instalará o NHibernate 3.0.0.4000 em seu projeto e adicionará os redirecionamentos de associação apropriados para que ele funcione. Seu projeto será compilado corretamente a análise de código não estiver ativada. Em contraste com o compilador, a ferramenta de análise de código não segue corretamente os redirecionamentos de associação para usar 3.0.0.4000 em vez de 3.0.0.2001. Você pode contornar o problema instalando o NHibernate 3.0.0.2001 ou dizer à ferramenta de análise de código para se comportar do mesmo modo que o compilador fazendo o seguinte:
- Acesse %PROGRAMFILES%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
- Abra o FxCopCmd.exe.config e altere
AssemblyReferenceResolveMode
deStrongName
paraStrongNameIgnoringVersion
. - Salve a alteração e recompile o projeto.
Esse é um problema conhecido. Em vez de chamar Write-Error, tente chamar throw.
throw "My error message"
Ao tentar instalar o NuGet usando o Visual Studio Extension Manager e se você não estiver realizando a execução como administrador, a caixa de diálogo “Executar como” será exibida com a caixa de seleção “Executar este programa com acesso restrito” marcada por padrão.
Clicar em OK com isso marcado causa uma falha no Visual Studio. Lembre-se de desmarcar essa opção antes de instalar o NuGet.
Ferramentas do Windows Phone não são compatíveis com o Gerenciador de Extensões do Visual Studio. Para desinstalar o NuGet, execute o seguinte comando.
vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5
Alterar a diferenciação entre maiúsculas e minúsculas de IDs do pacote do NuGet interrompe a restauração do pacote
Conforme discutido em detalhes neste problema do GitHub, é possível alterar as letras minúsculas e maiúsculas de pacotes do NuGet por meio do suporte ao NuGet, mas isso causa complicações durante a restauração de pacote para usuários que têm pacotes existentes com um padrão diferente de maiúsculas e minúsculas na pasta global-packages. É recomendável solicitar uma alteração de caso somente quando você tem uma maneira de se comunicar com os usuários existentes do seu pacote sobre a interrupção que pode ocorrer na restauração do pacote de tempo de build.
Para relatar problemas do NuGet, visite https://github.com/nuget/home/issues.