2011-08-31 88 views
41

我在VS項目中安裝了一個NuGet包(我們已經在項目中開發)。當我上的NuGet項目運行Update-Package我得到:Nuget Update-Package無法識別已安裝的軟件包 - >更新失敗

Update-Package : 'Project name' was not installed in any project. Update failed. 
At line:1 char:15 
+ Update-Package <<<< Project name 
    + CategoryInfo   : NotSpecified: (:) [Update-Package], InvalidOperationException 
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand 

我在package.config文件,以確保在NuGet包定義檢查,它是。任何線索?

+0

您是否在共享軟件包文件夾的同一文件夾中有多個解決方案? 你是否將包交給源代碼管理? – davidfowl

+0

否和否。我們不在解決方案之間共享軟件包文件夾,我們也沒有將相關軟件包提交給源代碼控制。但是,這不再是一個問題。我剛剛刪除了有問題軟件包的所有舊文件夾,並開始重新開始工作。 –

+0

我想我可能有不同的版本安裝在packages文件夾中(因爲我們沒有檢查它們),與package.config中指定的版本相比,可能有什麼要說的嗎? –

回答

49

我正在與Tomas一起開發同一個項目,我試圖弄清楚何時發生這個問題以及爲什麼。當我們在packages文件夾中有一個或多箇舊版本的軟件包並嘗試發出'update-package'命令時,似乎會發生這種情況。

在發出命令我們的包文件夾和配置是這樣的:

包文件夾:

Common.WebApi.1.0.0.109 
Common.WebApi.1.0.0.110 

套餐配置:

<packages> 
    <package id="Common.WebApi" version="1.0.0.110" /> 
    <package id="System.Json" version="4.0.20126.16343" /> 
    <package id="System.Net.Http" version="2.0.20126.16343" /> 
</packages> 

現在,發出「更新包時的常見.WebApi'我們得到錯誤:
更新包:'OPF.Common.WebApi'未安裝在任何項目中。更新失敗。

要修復它,我從軟件包文件夾中刪除舊軟件包'Common.WebApi.1.0.0.109',然後重新運行然後工作的命令。

顯而易見的問題是:爲什麼我的包文件夾中有一箇舊的包?這發生在我們身上,因爲我們沒有將自己的軟件包提交給源代碼控制。相反,我們使用的是這裏所描述的方法:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

的「老包問題」發生在這種情況:
1.開發一個更新包並提交package.config源代碼控制
2。開發人員B從源代碼控制獲取最新版本並接收更新後的包package.config
3.開發人員B構建項目,並在其包文件夾中創建新包
4. Nuget不會從包中刪除開發人員B的舊包因此開發者B現在在他的軟件包文件夾中既有舊軟件包又有新軟件包,但只有package.config中的引用對新版本有所幫助。

對我來說,似乎Nuget並不希望在packages文件夾中有多個版本的軟件包,並且在嘗試更新包含多個版本的軟件包時會感到困惑儘管你只能從package.config中引用一個包。

+6

長話短說:確保'packages'文件夾中沒有未使用的軟件包版本,刪除這些修復了問題。 – jgauffin

5

最近我有一個非常類似的問題 - 原來是packages/repositories.config丟失(因爲我們沒有提交packages文件夾)。我在VS中做了一些事情(可能會在項目中添加一個新包),導致VS重新生成repositories.config文件,其中列出了所有項目的所有包。之後,更新工作正常。

+0

聽起來像我的場景。 –

+0

類似的情況下你的 - 我有4次下載的vsix文件和名稱被追加(1),(2)和(3)一旦我刪除並留下一個名爲NuGet.Tools.vsix然後它的工作。 (我相信當你嘗試更新金塊並失敗時出現錯誤,那麼你不能再從金塊安裝它,至少那是我的經驗 – ramnz

+0

同樣感謝上帝的源代碼管理 – Casey

2

下面是如何設法得到最新版本的軟件包管理器:

  1. 開始VS2010在管理模式(以管理員身份運行)
  2. 工具>管理器>卸載的NuGet
  3. 重新啓動Visual工作室
  4. 安裝NuGet

瞧!

希望這會有所幫助。

3

我有同樣的問題。我們沒有檢查包文件夾(nuget構建任務下載所有包)。

我解決問題的唯一方法是刪除packages文件夾,然後重建項目。

0

另一種方式可能出現這種情況:

  1. 沒有包被恢復(使用ReSharper的2016.2構建例如)
  2. 嘗試,而有問題的包的版本更新中不存在/包/

要修復,以某種方式運行恢復軟件包