Znane problemy z pakietem NuGet
Są to najbardziej typowe znane problemy z pakietem NuGet, które są wielokrotnie zgłaszane. Jeśli masz problemy z instalowaniem pakietów NuGet lub zarządzaniem nimi, zapoznaj się z tymi znanymi problemami i ich rozwiązaniami.
Uwaga
Od wersji NuGet 4.0 znane problemy są częścią odpowiednich informacji o wersji.
Ustawienia inspekcji narzędzia NuGet mogą nie być poprawnie stosowane dla projektów przy użyciu pliku packages.config w programie Visual Studio 17.10
Dodano obsługę inspekcji NuGet dla projektów packages.config, począwszy od pakietów NuGet 6.10 i Visual Studio 17.10. Informacje na temat konfigurowania inspekcji NuGet można znaleźć w naszej dokumentacji dotyczącej pakietów inspekcji.
Problem:
Jeśli co najmniej dwa projekty korzystające z pliku packages.config w rozwiązaniu używają tej samej nazwy projektu, inspekcja NuGet wybierze jeden i użyje tych samych ustawień inspekcji NuGet dla obu projektów.
Problem ze śledzeniem w celu usunięcia tego ograniczenia jest dostępny w usłudze GitHub.
Obejście:
Jeśli wszystkie projekty o tej samej nazwie używają tych samych wartości konfiguracji, wówczas nie będzie różnicy funkcjonalnej, gdy program NuGet przywraca jeden projekt przy użyciu konfiguracji innego projektu.
NuGet.exe nie ma tego ograniczenia, dlatego możesz pobrać NuGet.exe i uruchomić NuGet.exe restore
w rozwiązaniu, aby sprawdzić, czy ostrzeżenia inspekcji NuGet różnią się w wierszu polecenia do tego, co raportuje program Visual Studio.
Jeśli można zmienić nazwy projektów tak, aby miały różne nazwy projektów, ten scenariusz problemu nie zostanie napotkany.
Problemy z uwierzytelnianiem źródeł danych NuGet w usłudze VSTS z nuget.exe w wersji 3.4.3
Problem:
Gdy używamy następującego polecenia do przechowywania poświadczeń, kończymy się dwukrotnie szyfrowaniem osobistego tokenu dostępu.
$PAT = "Osobisty token dostępu" $Feed = "Adres URL" .\nuget.exe sources add -Name Test -Source $Feed -UserName $UserName -Password $PAT
Obejście:
Zapisz hasła w postaci zwykłego tekstu przy użyciu opcji -StorePasswordInClearText .
Błąd podczas instalowania pakietów za pomocą pakietu NuGet 3.4, 3.4.1
Problem:
W pakietach NuGet 3.4 i 3.4.1 w przypadku korzystania z dodatku NuGet żadne źródła nie są zgłaszane jako dostępne i nie można dodać nowych źródeł w oknie konfiguracji. Wynik jest podobny do poniższego obrazu:
Plik NuGet.Config
w %AppData%\NuGet\
folderze (Windows) lub ~/.nuget/
(Mac/Linux) został przypadkowo opróżniony. Aby rozwiązać ten problem: zamknij program Visual Studio (w systemie Windows, jeśli ma to zastosowanie), usuń NuGet.Config
plik i spróbuj ponownie wykonać operację. Pakiet NuGet wygenerował nowy NuGet.Config
i powinien być w stanie kontynuować.
Błąd podczas instalowania pakietów przy użyciu pakietu NuGet 2.7
Problem:
W programie NuGet 2.7 lub nowszym podczas próby zainstalowania dowolnego pakietu zawierającego odwołania do zestawu może zostać wyświetlony komunikat o błędzie "Ciąg wejściowy nie był w poprawnym formacie"., jak pokazano poniżej:
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
Jest to spowodowane tym, że biblioteka VSLangProj.dll
typów składnika COM jest wyrejestrowana w systemie. Może się to zdarzyć, na przykład w przypadku zainstalowania dwóch wersji programu Visual Studio obok siebie, a następnie odinstalowania starszej wersji. Może to spowodować niezamierzone wyrejestrowanie powyższej biblioteki COM.
Rozwiązanie::
Uruchom to polecenie z wiersza polecenia z podwyższonym poziomem uprawnień, aby ponownie zarejestrować bibliotekę typów dla poleceniaVSLangProj.dll
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Jeśli polecenie zakończy się niepowodzeniem, sprawdź, czy plik istnieje w tej lokalizacji.
Aby uzyskać więcej informacji na temat tego błędu, zobacz ten [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609")
element .
Niepowodzenie kompilacji po aktualizacji pakietu w programie VS 2012
Problem: Używasz programu VS 2012 RTM. Podczas aktualizowania pakietów NuGet zostanie wyświetlony następujący komunikat: "Nie można ukończyć odinstalowywania co najmniej jednego pakietu". Zostanie wyświetlony monit o ponowne uruchomienie programu Visual Studio. Po ponownym uruchomieniu programu VS występują dziwne błędy kompilacji.
Przyczyną jest to, że niektóre pliki w starych pakietach są zablokowane przez proces MSBuild w tle. Nawet po ponownym uruchomieniu programu VS proces MSBuild w tle nadal używa plików w starych pakietach, co powoduje błędy kompilacji.
Poprawka polega na zainstalowaniu aktualizacji programu VS 2012, np. VS 2012 Update 2.
Uaktualnianie do najnowszego pakietu NuGet ze starszej wersji powoduje błąd weryfikacji podpisu
Jeśli korzystasz z programu VS 2010 z dodatkiem SP1, podczas próby uaktualnienia pakietu NuGet może wystąpić następujący komunikat o błędzie, jeśli masz zainstalowaną starszą wersję.
Podczas przeglądania dzienników może zostać wyświetlona wzmianka o obiekcie SignatureMismatchException
.
Aby temu zapobiec, istnieje poprawka programu Visual Studio 2010 z dodatkiem SP1, którą można zainstalować. Alternatywnie obejściem jest po prostu odinstalowanie narzędzia NuGet (podczas uruchamiania programu Visual Studio jako administrator), a następnie zainstalowanie go z galerii rozszerzeń programu VS. Aby uzyskać więcej informacji, zobacz https://support.microsoft.com/kb/2581019.
Menedżer pakietów Console zgłasza wyjątek, gdy jest również zainstalowany dodatek odzwierciedlonego programu Visual Studio.
Podczas uruchamiania konsoli Menedżer pakietów może wystąpić następujący komunikat o wyjątku, jeśli masz zainstalowany dodatek refleksora PROGRAMU VS.
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
lub
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)
Skontaktowaliśmy się z autorem dodatku w nadziei na wypracowanie rozwiązania.
Aktualizacja: sprawdziliśmy, że najnowsza wersja reflektora 6.5 nie powoduje już tego wyjątku w konsoli programu .
Otwieranie konsoli Menedżer pakietów kończy się niepowodzeniem z wyjątkiem ObjectSecurity
Te błędy mogą wystąpić podczas próby otwarcia konsoli Menedżer pakietów:
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.
Jeśli tak, postępuj zgodnie z rozwiązaniem omówionymi w witrynie StackOverflow , aby je naprawić.
Okno dialogowe Dodawanie odwołania do biblioteki pakietów zgłasza wyjątek, jeśli rozwiązanie zawiera projekt InstallShield Limited Edition
Ustaliliśmy, że jeśli rozwiązanie zawiera co najmniej jeden projekt InstallShield Limited Edition, okno dialogowe Dodawanie dokumentacji biblioteki pakietów zgłosi wyjątek po otwarciu. Obecnie nie ma jeszcze obejścia z wyjątkiem usuwania projektów InstallShield lub ich zwalniania.
Czy odinstalować przycisk wyszarzony? Narzędzie NuGet wymaga uprawnień administratora do zainstalowania/odinstalowania
Jeśli spróbujesz odinstalować pakiet NuGet za pośrednictwem Menedżera rozszerzeń programu Visual Studio, możesz zauważyć, że przycisk Odinstaluj jest wyłączony. Narzędzie NuGet wymaga dostępu administratora do instalowania i odinstalowywania. Uruchom ponownie program Visual Studio jako administrator, aby odinstalować rozszerzenie. Pakiet NuGet nie wymaga dostępu administratora do korzystania z niego.
Konsola Menedżer pakietów ulega awarii po otwarciu go w systemie Windows XP. Co jest nie tak?
Pakiet NuGet wymaga środowiska uruchomieniowego programu PowerShell 2.0. System Windows XP domyślnie nie ma programu PowerShell 2.0. Środowisko uruchomieniowe programu PowerShell 2.0 można pobrać z programu PowerShell 2.0 Pobierz. Po zainstalowaniu programu Visual Studio uruchom ponownie program Visual Studio i powinno być możliwe otwarcie konsoli Menedżer pakietów.
Program Visual Studio 2010 SP1 Beta ulega awarii po wyjściu, jeśli konsola Menedżer pakietów jest otwarta.
Jeśli zainstalowano program Visual Studio 2010 SP1 Beta, możesz zauważyć, że jeśli pozostawisz konsolę Menedżer pakietów otwartą i zamkniętą program Visual Studio, ulegnie awarii. Jest to znany problem programu Visual Studio i zostanie rozwiązany w wersji SP1 RTM. Na razie po prostu zignoruj awarię lub odinstaluj sp1 beta, jeśli to możliwe.
Element "metadata" ... występuje nieprawidłowy wyjątek elementu podrzędnego
Jeśli zainstalowano pakiety skompilowane przy użyciu wersji wstępnej pakietu NuGet, może wystąpić komunikat o błędzie z komunikatem "Element "metadata" w przestrzeni nazw "schemas.microsoft.com/packaging/2010/07/nuspec.xsd" ma nieprawidłowy element podrzędny" podczas uruchamiania wersji NUGet RTM z tym projektem. Należy odinstalować, a następnie ponownie zainstalować każdy pakiet przy użyciu wersji RTM pakietu NuGet.
Próba zainstalowania lub odinstalowania powoduje błąd "Nie można utworzyć pliku, gdy ten plik już istnieje".
Z jakiegoś powodu rozszerzenia programu Visual Studio mogą znajdować się w dziwnym stanie, w którym odinstalowano rozszerzenie VSIX, ale niektóre pliki zostały pozostawione w tyle. Aby obejść ten problem:
Zamykanie programu Visual Studio
Otwórz następujący folder (może znajdować się na innym dysku na maszynie)
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Menedżer pakietów< version>\
Usuń wszystkie pliki z rozszerzeniami deleteme .
Otwórz ponownie program Visual Studio
Po wykonaniu tych kroków powinno być możliwe kontynuowanie.
W rzadkich przypadkach kompilowanie z włączoną analizą kodu powoduje błąd.
Jeśli zainstalujesz aplikację FluentNHibernate z konsolą Menedżer pakietów, a następnie skompilujesz projekt z włączonym poleceniem "Analiza kodu".
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
Domyślnie fluentNHibernate wymaga NHibernate 3.0.0.2001. Jednak zgodnie z projektem nuGet zainstaluje element NHibernate 3.0.0.4000 w projekcie i doda odpowiednie przekierowania powiązania, aby działały. Projekt zostanie skompilowany prawidłowo, jeśli analiza kodu nie jest włączona. W przeciwieństwie do kompilatora narzędzie analizy kodu nie jest prawidłowo zgodne z przekierowaniami powiązań, aby używać wersji 3.0.0.4000 zamiast 3.0.0.2001. Aby obejść ten problem, zainstaluj narzędzie NHibernate 3.0.0.2001 lub poinformuj narzędzie analizy kodu, aby zachowywało się tak samo jak kompilator, wykonując następujące czynności:
- Przejdź do folderu %PROGRAMFILES%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop
- Otwórz plik FxCopCmd.exe.config i przejdź
AssemblyReferenceResolveMode
zStrongName
naStrongNameIgnoringVersion
. - Zapisz zmianę i ponownie skompiluj projekt.
Polecenie Write-Error nie działa wewnątrz install.ps1/uninstall.ps1/init.ps1
Jest to znany problem. Zamiast wywoływać funkcję Write-Error, spróbuj wywołać funkcję throw.
throw "My error message"
Instalowanie pakietu NuGet z ograniczonym dostępem w systemie Windows 2003 może ulec awarii programu Visual Studio
Podczas próby zainstalowania pakietu NuGet przy użyciu Menedżera rozszerzeń programu Visual Studio, a nie jako administrator, zostanie wyświetlone okno dialogowe "Uruchom jako" z polem wyboru "Uruchom ten program z ograniczonym dostępem" zaznaczone domyślnie.
Kliknięcie przycisku OK z zaznaczoną pozycją powoduje awarię programu Visual Studio. Pamiętaj, aby usunąć zaznaczenie tej opcji przed zainstalowaniem narzędzia NuGet.
Nie można odinstalować narzędzia NuGet dla narzędzi Systemu Windows Phone
Narzędzia Windows Phone Tools nie obsługują Menedżera rozszerzeń programu Visual Studio. Aby odinstalować pakiet NuGet, uruchom następujące polecenie.
vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5
Zmiana liter identyfikatorów pakietów NuGet powoduje przerwanie przywracania pakietu
Zgodnie z opisem na temat tego problemu z usługą GitHub zmiana wielkości liter pakietów NuGet może być wykonywana przez pomoc techniczną NuGet, ale powoduje komplikacje podczas przywracania pakietów dla użytkowników, którzy mają istniejące, różne przypadki, pakiety w folderze global-packages . Zalecamy zażądanie zmiany przypadku tylko wtedy, gdy masz sposób komunikowania się z istniejącymi użytkownikami pakietu o przerwaniu, które mogą wystąpić w przypadku przywracania pakietu w czasie kompilacji.
Raportowanie problemów
Aby zgłosić problemy z pakietem NuGet, odwiedź stronę https://github.com/nuget/home/issues.