Známé problémy s NuGetem
Jedná se o nejběžnější známé problémy s NuGetem, které se opakovaně hlásí. Pokud máte potíže s instalací NuGetu nebo správou balíčků, projděte si tyto známé problémy a jejich řešení.
Poznámka:
Od NuGetu 4.0 jsou známé problémy součástí příslušných poznámek k verzi.
U projektů používajících packages.config v sadě Visual Studio 17.10 se nemusí správně použít nastavení auditu NuGet.
Byla přidána podpora auditu NuGet pro projekty packages.config od NuGetu 6.10 a sady Visual Studio 17.10. Informace o tom, jak nakonfigurovat Audit NuGet, najdete v naší dokumentaci k balíčkům auditování.
Problém:
Pokud dva nebo více projektů používajících packages.config v řešení používají stejný název projektu, pak NuGet Audit vybere jedno a použije stejné nastavení auditu NuGet pro oba projekty.
Problém se sledováním odebrání tohoto omezení je k dispozici na GitHubu.
Alternativní řešení:
Pokud všechny projekty se stejným názvem používají stejné konfigurační hodnoty, nebude žádný funkční rozdíl, když NuGet obnoví jeden projekt pomocí jiné konfigurace projektu.
NuGet.exe toto omezení nemá, takže si můžete stáhnout NuGet.exe a spustit NuGet.exe restore
v řešení, abyste zjistili, jestli se upozornění auditu NuGet liší na příkazovém řádku s tím, co Visual Studio hlásí.
Pokud je možné přejmenovat projekty tak, aby měly různé názvy projektů, tento problém se nezobrazí.
Problémy s ověřováním v informačních kanálech NuGet ve VSTS s nuget.exe v3.4.3
Problém:
Když k uložení přihlašovacích údajů použijeme následující příkaz, zašifrujeme osobní přístupový token dvojitým šifrováním.
$PAT = "Váš osobní přístupový token" $Feed = "Vaše adresa URL" .\nuget.exe zdroje add -Name Test -Source $Feed -UserName $UserName -Password $PAT
Alternativní řešení:
Hesla můžete ukládat ve formátu prostého textu pomocí možnosti -StorePasswordInClearText .
Chyba při instalaci balíčků s NuGetem 3.4, 3.4.1
Problém:
Při použití doplňku NuGet 3.4 a 3.4.1 nejsou žádné zdroje hlášeny jako dostupné a v okně konfigurace nemůžete přidat nové zdroje. Výsledek je podobný následujícímu obrázku:
Soubor NuGet.Config
ve složce %AppData%\NuGet\
(Windows) nebo ~/.nuget/
(Mac/Linux) se omylem vyprázdnil. Pokud chcete tento problém vyřešit, zavřete Visual Studio (v případě potřeby ve Windows), odstraňte NuGet.Config
soubor a zkuste operaci zopakovat. NuGet vygeneroval nový NuGet.Config
a měli byste být schopni pokračovat.
Chyba při instalaci balíčků s NuGetem 2.7
Problém:
Při pokusu o instalaci libovolného balíčku obsahujícího odkazy na sestavení v NuGetu 2.7 nebo novějším se může zobrazit chybová zpráva "Vstupní řetězec nebyl ve správném formátu", například níže:
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
Příčinou je knihovna typů pro komponentu VSLangProj.dll
COM, která se ve vašem systému neregistruje. K tomu může dojít například v případě, že máte nainstalované dvě verze sady Visual Studio vedle sebe a pak odinstalujete starší verzi. Tím se může neúmyslně zrušit registrace výše uvedené knihovny MODELU COM.
Řešení::
Spuštěním tohoto příkazu z příkazového řádku se zvýšenými oprávněními znovu zaregistrujte knihovnu typů pro VSLangProj.dll
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Pokud příkaz selže, zkontrolujte, jestli soubor v tomto umístění existuje.
Další informace o této chybě naleznete v tomto [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609")
tématu .
Selhání sestavení po aktualizaci balíčku ve VS 2012
Problém: Používáte VS 2012 RTM. Při aktualizaci balíčků NuGet se zobrazí tato zpráva: "Jeden nebo více balíčků nebylo možné odinstalovat." a zobrazí se výzva k restartování sady Visual Studio. Po restartování VS se zobrazí divné chyby sestavení.
Příčinou je, že určité soubory ve starých balíčcích jsou uzamčeny procesem MSBuild na pozadí. I po restartování VS proces MSBuild na pozadí stále používá soubory ve starých balíčcích, což způsobuje selhání sestavení.
Opravou je instalace aktualizace VS 2012, např. VS 2012 Update 2.
Upgrade na nejnovější NuGet ze starší verze způsobí chybu ověření podpisu.
Pokud používáte VS 2010 SP1, může při pokusu o upgrade NuGet dojít k následující chybové zprávě, pokud máte nainstalovanou starší verzi.
Při prohlížení protokolů se může zobrazit zmínka o SignatureMismatchException
.
Aby k tomu nedošlo, je k dispozici oprava hotfix sady Visual Studio 2010 SP1, kterou můžete nainstalovat. Alternativním řešením je jednoduše odinstalovat NuGet (při spuštění sady Visual Studio jako správce) a pak ho nainstalovat z galerie rozšíření VS. Další informace naleznete v tématu https://support.microsoft.com/kb/2581019.
konzola Správce balíčků vyvolá výjimku při instalaci doplňku Reflector Visual Studio.
Pokud máte nainstalovaný doplněk Reflector VS, můžete při spuštění konzoly Správce balíčků narazit na následující zprávu o výjimce.
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
nebo
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)
Kontaktovali jsme autora doplňku s nadějemi na vyřešení.
Aktualizace: Ověřili jsme, že nejnovější verze Reflectoru verze 6.5 už v konzole nezpůsobí tuto výjimku.
Otevření konzoly Správce balíčků selže s výjimkou ObjectSecurity
Při pokusu o otevření konzoly Správce balíčků se můžou zobrazit tyto chyby:
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.
Pokud ano, postupujte podle řešení probíraného na StackOverflow a opravte je.
Dialogové okno Přidat odkaz na knihovnu balíčků vyvolá výjimku, pokud řešení obsahuje projekt InstallShield Limited Edition
Zjistili jsme, že pokud vaše řešení obsahuje jeden nebo více projektů InstallShield Limited Edition, dialogové okno Přidat odkaz na knihovnu balíčků vyvolá výjimku při otevření. Momentálně neexistuje žádné alternativní řešení s výjimkou odebrání projektů InstallShield nebo jejich uvolnění.
Tlačítko Odinstalovat šedě? NuGet vyžaduje oprávnění správce k instalaci nebo odinstalaci.
Pokud se pokusíte odinstalovat NuGet přes Správce rozšíření sady Visual Studio, můžete si všimnout, že tlačítko Odinstalovat je zakázané. NuGet vyžaduje přístup správce k instalaci a odinstalaci. Znovu spusťte Visual Studio jako správce a odinstalujte rozšíření. NuGet nevyžaduje k jeho použití přístup správce.
Konzola Správce balíčků se chybově ukončí, když ji otevřu v systému Windows XP. Co je?
NuGet vyžaduje modul runtime PowerShellu 2.0. Windows XP ve výchozím nastavení nemá PowerShell 2.0. Modul runtime PowerShellu 2.0 si můžete stáhnout z PowerShellu 2.0 Ke stažení. Po instalaci restartujte Visual Studio a měli byste být schopni otevřít konzolu Správce balíčků.
Visual Studio 2010 SP1 Beta se při ukončení ukončí, pokud je otevřená konzola Správce balíčků.
Pokud jste nainstalovali Visual Studio 2010 SP1 Beta, můžete si všimnout, že pokud necháte konzolu Správce balíčků otevřenou a zavřete Visual Studio, dojde k chybovému ukončení. Jedná se o známý problém sady Visual Studio a bude opraven ve verzi SP1 RTM. Prozatím ignorujte chybové ukončení nebo odinstalujte verzi SP1 Beta, pokud můžete.
Prvek metadata ... Má neplatnou výjimku podřízeného elementu.
Pokud jste nainstalovali balíčky vytvořené s předběžnou verzí NuGetu, může se při spuštění verze NuGetu v daném projektu zobrazit chybová zpráva "Element metadata" v oboru názvů schemas.microsoft.com/packaging/2010/07/nuspec.xsd má neplatný podřízený prvek. Potřebujete odinstalovat a pak znovu nainstalovat každý balíček pomocí verze RTM NuGetu.
Při pokusu o instalaci nebo odinstalaci dojde k chybě "Soubor nelze vytvořit, pokud již tento soubor existuje".
Z nějakého důvodu se rozšíření sady Visual Studio můžou dostat do divného stavu, kdy jste odinstalovali rozšíření VSIX, ale některé soubory zůstaly za sebou. Náhradní řešení tohoto problému:
Ukončení sady Visual Studio
Otevřete následující složku (může být na jiné jednotce na vašem počítači).
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Správce balíčků< version>\
Odstraňte všechny soubory s příponou .deleteme .
Opětovné otevření sady Visual Studio
Po provedení těchto kroků byste měli být schopni pokračovat.
Ve výjimečných případech způsobí kompilace se zapnutou analýzou kódu chybu.
Pokud nainstalujete FluentNHibernate s konzolou Správce balíčků a pak projekt zkompilujete se zapnutou analýzou kódu, může se zobrazit následující chyba.
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
Ve výchozím nastavení vyžaduje FluentNHibernate NHibernate 3.0.0.2001. NuGet však podle návrhu nainstaluje NHibernate 3.0.0.4000 v projektu a přidá příslušné vazby přesměrování tak, aby fungoval. Projekt se zkompiluje jenom v případě, že není zapnutá analýza kódu. Na rozdíl od kompilátoru nástroj pro analýzu kódu neodpovídá přesměrování vazby tak, aby místo 3.0.4000 místo 3.0.0.0.2001 používal 3.0.2001. Tento problém můžete obejít tak, že nainstalujete NHibernate 3.0.0.2001 nebo dáte nástroji pro analýzu kódu, aby se choval stejně jako kompilátor, a to následujícím způsobem:
- Přejděte na %PROGRAMFILES%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
- Otevřete soubor FxCopCmd.exe.config a přejděte
AssemblyReferenceResolveMode
naStrongName
StrongNameIgnoringVersion
. - Uložte změnu a znovu sestavte projekt.
Příkaz Write-Error nefunguje uvnitř install.ps1/uninstall.ps1/init.ps1
Jedná se o známý problém. Místo volání chyby zápisu zkuste zavolat vyvolání.
throw "My error message"
Instalace NuGetu s omezeným přístupem ve Windows 2003 může dojít k chybovému ukončení sady Visual Studio
Při pokusu o instalaci NuGet pomocí Správce rozšíření sady Visual Studio a neběží jako správce, zobrazí se dialogové okno Spustit jako se zaškrtávacím zaškrtávacím políčkam "Spustit tento program s omezeným přístupem" zaškrtnuté ve výchozím nastavení.
Kliknutím na OK se kontrolou dojde k chybovému ukončení sady Visual Studio. Před instalací NuGet nezapomeňte zrušit zaškrtnutí této možnosti.
Nejde odinstalovat NuGet pro nástroje pro Windows Phone
Nástroje windows Phone Tools nepodporují Správce rozšíření sady Visual Studio. Pokud chcete odinstalovat NuGet, spusťte následující příkaz.
vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5
Změna velikosti velkých písmen ID balíčků NuGet přeruší obnovení balíčku.
Jak je popsáno na tomto problému GitHubu, změnu velkých písmen balíčků NuGet může provést podpora NuGetu, ale způsobuje komplikace při obnovování balíčků pro uživatele, kteří mají existující, různě velké a velké balíčky ve složce globálních balíčků. Pokud máte možnost komunikovat se stávajícími uživateli balíčku o přerušení, ke kterému může dojít při obnovení balíčku v době sestavení, doporučujeme požádat pouze o změnu případu.
Hlášení problémů
Pokud chcete nahlásit problémy NuGet, navštivte stránku https://github.com/nuget/home/issues.