次の方法で共有


NuGet に関する既知の問題

これらは、繰り返し報告される NuGet の最も一般的な既知の問題です。 NuGet のインストールまたはパッケージの管理で問題が発生した場合は、これらの既知の問題とその解決策を確認してください。

NuGet 4.0 以降では、既知の問題がそれぞれのリリース ノートに含まれます。

Visual Studio 17.10 で packages.config を使用しているプロジェクトに対して NuGet 監査設定が正しく適用されない

NuGet 6.10 および Visual Studio 17.10 以降の packages.config プロジェクトに対する NuGet 監査のサポートが追加されました。 NuGet 監査を構成する方法については、 監査パッケージに関するドキュメントを参照してください。

問題:

ソリューションで packages.config を使用する複数のプロジェクトで同じプロジェクト名が使用されている場合、NuGet Audit は 1 つを選択し、両方のプロジェクトに同じ NuGet 監査設定を使用します。

この制限を削除するための追跡の問題は、 GitHub で入手できます

対処法:

同じ名前のすべてのプロジェクトが同じ構成値を使用する場合、NuGet が別のプロジェクトの構成を使用して 1 つのプロジェクトを復元しても、機能的な違いはありません。

NuGet.exe にはこの制限がないため、 ソリューションで NuGet.exeをダウンロード して NuGet.exe restore 実行して、コマンド ラインで NuGet 監査の警告が Visual Studio で報告されているものと異なるかどうかを確認できます。

プロジェクト名が異なるようにプロジェクトの名前を変更することが可能な場合、この問題のシナリオは発生しません。

nuget.exe v3.4.3 を使用した VSTS での NuGet フィードに関する認証の問題

問題:

次のコマンドを使用して資格情報を格納すると、個人用アクセス トークンが二重に暗号化されます。

$PAT = "個人用アクセス トークン" $Feed = "Your URL" です。ソース\nuget.exe テスト -Source $Feed -UserName $UserName -Password $PAT -Name 追加する

対処法:

-StorePasswordInClearText オプションを使用して、クリア テキストでパスワードを格納します。

NuGet 3.4、3.4.1 でパッケージをインストール中にエラーが発生しました

問題:

NuGet 3.4 および 3.4.1 では、NuGet アドインを使用する場合、使用可能なソースは報告されません。また、構成ウィンドウに新しいソースを追加することはできません。 結果は次の図のようになります。

ソースのない NuGet 構成

NuGet.Config (Windows) または %AppData%\NuGet\ (Mac/Linux) フォルダー内の~/.nuget/ ファイルが誤って空になっています。 この問題を解決するには、Visual Studio (該当する場合は Windows 上) を閉じ、 NuGet.Config ファイルを削除してから、もう一度実行してください。 NuGet によって新しい NuGet.Config が生成され、続行できるようになります。

NuGet 2.7 でパッケージをインストール中にエラーが発生しました

問題:

NuGet 2.7 以降では、アセンブリ参照を含むパッケージをインストールしようとすると、次のようなエラーメッセージ「文字列の形式が正しくありません。」が表示されることがあります。

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

これは、 VSLangProj.dll COM コンポーネントのタイプ ライブラリがシステムで登録解除されていることが原因で発生します。 これは、たとえば、2 つのバージョンの Visual Studio をサイド バイ サイドでインストールし、古いバージョンをアンインストールした場合などに発生する可能性があります。 これを行うと、上記の COM ライブラリの登録が誤って解除される可能性があります。

解決策::

管理者特権のプロンプトからこのコマンドを実行し、タイプライブラリを再登録します。VSLangProj.dll

regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"

コマンドが失敗した場合は、その場所にファイルが存在するかどうかを確認します。

このエラーの詳細については、この [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609")を参照してください。

VS 2012 でのパッケージ更新後のビルドエラー

問題: VS 2012 RTM を使用しています。 NuGet パッケージを更新すると、"1 つ以上のパッケージをアンインストールできませんでした" というメッセージが表示され、Visual Studio を再起動するように求められます。 VS の再起動後、奇妙なビルド エラーが発生します。

原因は、古いパッケージ内の特定のファイルがバックグラウンド MSBuild プロセスによってロックされていることです。 VS の再起動後も、バックグラウンドの MSBuild プロセスでは古いパッケージ内のファイルが使用され、ビルド エラーが発生します。

修正は、VS 2012 Update 2 など、VS 2012 更新プログラムをインストールする方法です。

古いバージョンから最新の NuGet にアップグレードすると、署名検証エラーが発生する

VS 2010 SP1 を実行している場合は、古いバージョンがインストールされている場合に NuGet をアップグレードしようとしたときに、次のエラー メッセージが表示されることがあります。

Visual Studio 拡張機能インストーラー

ログを表示すると、 SignatureMismatchExceptionのメンションが表示されることがあります。

この問題を回避するために、 インストールできる Visual Studio 2010 SP1 修正プログラム があります。 または、回避策として、NuGet をアンインストールし (管理者として Visual Studio を実行している間)、VS 拡張機能ギャラリーからインストールします。 詳細については、https://support.microsoft.com/kb/2581019 を参照してください。

パッケージ マネージャー コンソールは、Reflector Visual Studio Add-In もインストールされている場合に例外をスローします。

パッケージ マネージャー コンソールを実行するときに、Reflector 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

又は

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)) ---&gt; 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 />---&gt; 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&amp; found)
    at Microsoft.PowerShell.Commands.ModuleCmdletBase.LoadModuleNamedInManifest(String moduleName, String moduleBase, <br />Boolean searchModulePath, <br />String prefix, SessionState ss, Boolean loadTypesFiles, Boolean loadFormatFiles, Boolean&amp; 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&amp; 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)

問題を解決することを期待して、アドイン作成者に連絡しました。

更新: 最新バージョンの Reflector 6.5 がコンソールでこの例外を引き起こさなくなったことを確認しました。

ObjectSecurity 例外でパッケージ マネージャー コンソールを開く方法が失敗する

パッケージ マネージャー コンソールを開こうとすると、次のエラーが表示されることがあります。

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.

その場合は、 StackOverflow で説明されているソリューションに 従って修正します。

ソリューションに InstallShield リミテッド エディション プロジェクトが含まれている場合、[パッケージ ライブラリ参照を追加] ダイアログで例外が発生する。

ソリューションに 1 つ以上の InstallShield Limited Edition プロジェクトが含まれている場合、[ パッケージ ライブラリ参照の追加 ] ダイアログが開くと例外がスローされることを確認しました。 現在のところ、InstallShield プロジェクトの削除またはアンロード以外の回避策はまだありません。

アンインストール ボタンが淡色表示されましたか? NuGet をインストール/アンインストールするには管理者特権が必要です

Visual Studio 拡張機能マネージャーを使用して NuGet をアンインストールしようとすると、[アンインストール] ボタンが無効になっている可能性があります。 NuGet をインストールしてアンインストールするには、管理者アクセス権が必要です。 拡張機能をアンインストールするには、管理者として Visual Studio を再起動します。 NuGet を使用するために管理者アクセス権は必要ありません。

Windows XP で開くと、パッケージ マネージャー コンソールがクラッシュします。 何が問題なのですか。

NuGet には PowerShell 2.0 ランタイムが必要です。 既定では、Windows XP には PowerShell 2.0 がありません。 PowerShell 2.0 ランタイムは 、PowerShell 2.0 ダウンロードからダウンロードできます。 インストールした後、Visual Studio を再起動すると、パッケージ マネージャー コンソールを開くことができるはずです。

パッケージ マネージャー コンソールが開いている場合、終了時に Visual Studio 2010 SP1 Beta がクラッシュします。

Visual Studio 2010 SP1 Beta をインストールしている場合、パッケージ マネージャー コンソールを開いたままにして Visual Studio を閉じると、クラッシュすることがあります。 これは Visual Studio の既知の問題であり、SP1 RTM リリースで修正される予定です。 現時点では、クラッシュを無視するか、可能な場合は SP1 ベータ版をアンインストールしてください。

要素 'metadata' ...無効な子要素の例外が発生しました

NuGet のプレリリース バージョンでビルドされたパッケージをインストールした場合、そのプロジェクトで Rtm バージョンの NuGet を実行するときに、"名前空間 'schemas.microsoft.com/packaging/2010/07/nuspec.xsd' の要素 'metadata' に無効な子要素があります" というエラー メッセージが表示されることがあります。 RTM バージョンの NuGet を使用して、各パッケージをアンインストールしてから再インストールする必要があります。

インストールまたはアンインストールしようとすると、「ファイルが既に存在する場合はファイルを作成できません」というエラーが表示されます。

何らかの理由で、Visual Studio 拡張機能は、VSIX 拡張機能をアンインストールしたが、一部のファイルが残っているという奇妙な状態になる可能性があります。 この問題を回避するには、次の手順を実行します。

  1. Visual Studio を終了する

  2. 次のフォルダーを開きます (コンピューター上の別のドライブにある可能性があります)

    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager<version>\

  3. .deleteme 拡張子を持つすべてのファイルを削除します。

  4. Visual Studio を再度開く

これらの手順を実行すると、続行できるようになります。

まれに、コード分析を有効にしてコンパイルするとエラーが発生します。

パッケージ マネージャー コンソールで FluentNHibernate をインストールし、"コード分析" を有効にしてプロジェクトをコンパイルすると、次のエラーが発生する可能性があります。

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

既定では、FluentNHibernate には NHibernate 3.0.0.2001 が必要です。 もともと、NuGet はプロジェクトに NHibernate 3.0.0.4000 をインストールし、正しいバインドリダイレクトを追加して正常に機能するようになっています。 コード分析が有効でない場合は、プロジェクトが正常にコンパイルされます。 コンパイラとは異なり、コード分析ツールはバインディング リダイレクトに正しく従わず、3.0.0.2001 ではなく 3.0.0.4000 を使用します。 この問題を回避するには、NHibernate 3.0.0.2001 をインストールするか、次の手順を実行して、コンパイラと同じように動作するようにコード分析ツールに指示します。

  1. %PROGRAMFILES%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop に移動します
  2. FxCopCmd.exe.config を開き、 AssemblyReferenceResolveModeStrongName から StrongNameIgnoringVersion に変更します。
  3. 変更を保存し、プロジェクトをリビルドします。

Write-Error コマンドは、install.ps1/uninstall.ps1/init.ps1 内では機能しません

これは既知の問題です。 Write-Error を呼び出す代わりに、throw を呼び出してみてください。

throw "My error message"

Windows 2003 へのアクセスが制限された NuGet をインストールすると、Visual Studio がクラッシュする

Visual Studio 拡張機能マネージャーを使用して NuGet をインストールしようとしたときに、管理者として実行されていない場合は、既定で [アクセスが制限されたプログラムを実行する] というラベルのチェック ボックスがオンになっている [実行] ダイアログが表示されます。

[制限付き実行] ダイアログ

オンにした状態で [OK] をクリックすると、Visual Studio がクラッシュします。 NuGet をインストールする前に、必ずこのオプションをオフにしてください。

Windows Phone ツール用 NuGet をアンインストールできない

Windows Phone ツールでは、Visual Studio 拡張機能マネージャーはサポートされていません。 NuGet をアンインストールするには、次のコマンドを実行します。

vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5

NuGet パッケージ ID の大文字化を変更すると、パッケージの復元が中断される

この GitHub の問題で長く説明したように、NuGet パッケージの大文字と小文字の変更は NuGet サポートによって行うことができますが、グローバル パッケージ フォルダーに既存の異なるケースのパッケージを持つユーザーに対しては、パッケージの復元中に複雑な問題が発生します。 ビルド時のパッケージの復元に発生する可能性のある中断についてパッケージの既存のユーザーと通信する方法がある場合にのみ、ケースの変更を要求することをお勧めします。

問題の報告

NuGet の問題を報告するには、 https://github.com/nuget/home/issuesにアクセスしてください。