2012-04-11 38 views
83

我的團隊自從Nuget 1.5開始使用「啓用軟件包恢復」選項來將軟件包從我們的源代碼管理中刪除。當Nuget 1.6發佈時,我們注意到一個問題,那就是它沒有拉下軟件包,並且將其追蹤到需要更新到1.6以匹配軟件包管理器的.nuget文件夾中的Nuget.exe。使用軟件包還原時,是否有辦法在.nuget文件夾中自動更新nuget.exe?

一旦Nuget被更新,最新的解決方案是什麼?我從工作室看不到一個簡單的方法,告訴解決方案文件夾中哪個版本的nuget。到目前爲止,我們吹掉了.nuget文件夾並重新運行啓用軟件包恢復命令。第一關閉VS解決方案:

回答

128

我建議更新.nuget \ nuget.exe與來自命令行命令:

nuget.exe update -self 

[編輯]。如果有更新並且解決方案已打開,nuget.exe將從解決方案中刪除。

可能通過修改.nuget \ nuget.targets添加上述命令,自動更新還原時的nuget.exe。我會看看那裏的恢復命令。但我不確定它是否值得,nuget.exe更新並不常見,並且向後兼容性應該很少會中斷。

+0

我想這對我的項目之一。它更新了NuGet.exe,但似乎已將其從我的解決方案中刪除。我知道我可以將它加回去,但那看起來很奇怪。 – Rick 2012-04-12 11:43:06

+0

啊對了,我這次嘗試了一個真正的更新,nuget.exe也從VS解決方案中移除了。 (因爲nuget.exe是最新的,所以我以前沒有收到過)。發生這種情況的原因是,在更新期間,當前的nuget.exe首先被移至nuget.exe.old,以致文件引用被破壞。我懷疑這會被修復,我會在解決方案關閉的情況下運行命令。 – 2012-04-13 22:03:39

+0

好的會的,謝謝你的幫助。 – Rick 2012-04-14 22:23:53

31

我發現處理這個問題的最好方法是簡單地刪除.nuget文件夾並重新啓用解決方案寬包恢復。如上所述,您可以將自我更新命令添加到您的構建中,但如果版本之間存在變化(或從解決方案中刪除引用),那麼不會更新目標或配置文件。也許它不是什麼大不了的事情,但這是確保你擁有最新的exe和配置文件的絕對火種。而在一天結束時,如果您需要訪問新命令或最終在新版本中發生重大更改,則更新只是一個問題。

+3

+1 - 我發現這是最好的方法更新NuGet.exe *以及NuGet.targets文件(這也很重要)。只要確保您保存了對NuGet.targets文件進行的任何自定義設置(例如,自定義PackageSources),以便您可以將它們重新應用到新文件。 – 2013-01-04 20:00:17

+0

非常適合我的魅力!感謝您的信息 – Gayan 2014-06-24 08:51:56

-1

See David Ebbo's post at his blog

基本上,所有你需要做的是建立一個NuGet.Config下一個文件到您的.sln文件,包含:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <clear/> 
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> 
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" /> 
    </packageSources> 
</configuration> 
+0

該問題詢問如何在使用軟件包恢復時自動將nuget.exe更新到最新版本。 David Ebbo的博客文章僅解釋如何使用nuget.exe恢復軟件包。 – Frith 2015-04-02 20:39:24

+0

您應該指定回答問題的哪一部分,然後在查看問題的標題和接受的答案時,很容易將此答案誤認爲是...... – Jens 2017-06-19 06:56:36

相關問題