4

次のように、ProjectX にパッケージ構成があります。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="2.5.2" />
  <package id="Castle.Windsor" version="2.5.3" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="MyCompany.Enum" version="1.1.0.11" />
  <package id="MyCompany.Common" version="1.1.0.9" />
  <package id="MyCompany.Castle.Installers" version="1.1.0.13" />
</packages>

パッケージ管理コンソールで次のコマンドを発行すると:

update-package -project ProjectX

次の出力が表示されます。

No updates available for 'MyCompany.Castle.Installers'.
No updates available for 'CommonServiceLocator'.
No updates available for 'Castle.Windsor'.
No updates available for 'Castle.Core'.

たまたま新しい があることを知っているのにMyCompany.Enum、出力にリストされていないのはなぜですか? update-packageインストール時にNuGetが最も適切なバージョンを使用しようとすることは知っていますが、この場合は最新バージョンに更新したいと考えています。

MyCompany.Enum次のコマンドで強制的に更新しようとしました:

update-package -project MyCompany.Services.MyService MyCompany.Enum

そして、今度はエラーメッセージが表示されました:

Update-Package : Unable to find package 'MyCompany.Enum' in 'MyCompany.Services.MyService'.
At line:1 char:15
+ update-package <<<<  -project MyCompany.Services.ProjectX MyCompany.enum
    + CategoryInfo          : NotSpecified: (:) [Update-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand

はソリューション エクスプローラーの ProjectX にMyCompany.Enum表示されpackages.config ProjectX によって参照されるため、これは非常に奇妙です。

これについて何が説明できるでしょうか?それがナゲットのバグであれば問題ありませんが、それがどのように機能するかについて何か誤解していると思います。で同様の奇妙なことが起こっていると聞いたことrepositories.configがありますが、これらの問題をここで見ているものと関連付けることはできませんでした。

よろしくお願いします。

更新このコマンドを使用して、パッケージを ProjectX
に手動でインストールする場合:MyCompany.Enum

install-package -project ProjectX MyCompany.Enum

次に、次の出力を取得します。

'MyCompany.Enum 1.5.0.1' already installed.
Successfully added 'MyCompany.Enum 1.5.0.1' to MyCompany.Services.ProjectX.

しかし悲しいことに、ファイルに の2 つのインスタンスがあります。MyCompany.Enumpackages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="2.5.2" />
  <package id="Castle.Windsor" version="2.5.3" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="MyCompany.Enum" version="1.1.0.11" />
  <package id="MyCompany.Common" version="1.1.0.9" />
  <package id="MyCompany.Castle.Installers" version="1.1.0.13" />
  <package id="MyCompany.Enum" version="1.5.0.1" />
</packages>
4

1 に答える 1

2

あなたのpackages\repositories.config現在と正しいですか?

ほとんどの人はパッケージ フォルダーをチェックインしないため、ファイルが失われます。NuGet コマンドの中には、最初にそこを調べて失敗するものがあります。一部のアクション (プロジェクトにパッケージをインストールするなど) により、パッケージが再生成されます。

更新が機能しないという非常によく似た問題がありましたが、新しいプロジェクトを追加すると、正しく機能し始めました。

于 2011-10-06T19:58:49.527 に答える