2013-03-12 126 views
2

在項目中恢復包時,Nuget不執行腳本。恢復包時,NuGet不執行腳本

以下是這種情況:我有一個安裝了定製NuGet軟件包的項目。該項目已爲該解決方案啓用NuGet軟件包恢復。這一切都完美無缺地工作,我通過從TFS獲取項目到一個空文件夾多次測試。

我已經將init.ps1和install.ps1添加到nuGet包,並且該包仍然被提取並正確安裝,但是腳本不會執行,除非該包是手動安裝的。

確切地說,如果我第一次從TFS獲得項目,init.ps1和install.ps1都不會執行。但是,如果我關閉解決方案並重新打開它,init.ps1會執行(如預期的那樣),但是,當然由於軟件包已經被恢復/安裝,install.ps1仍然不會。

手動安裝/卸載軟件包時(即軟件包「恢復」時不運行),這兩個腳本都能正常執行。

我的網絡搜索沒有發現任何此行爲的參考。我是否錯過了某些明顯的東西,或者在恢復包時這是正常的?

+3

包恢復只是簡單的還原,而不是安裝。我認爲這是設計。 http://nuget.codeplex.com/workitem/2728 – 2013-03-13 06:28:40

+0

感謝您的鏈接 - 這也是我的結論。我沒有意識到init.ps1背後的意圖。至於install.ps1,我認爲這是有道理的,因爲這個包實際上已經被「安裝」了 - 它只是從項目文件夾中丟失,因此就是「恢復」。 – 2013-03-13 12:10:03

回答

1

使用Package Restore功能,以便不是所有的軟件包都被簽入源代碼管理。因此,它所做的唯一的事情就是將NuGet軟件包下拉到您的./solution/packages文件夾中,以便在構建時可以正確解析程序集路徑和引用。 NuGet不作爲還原的一部分進行重新安裝,這意味着它不會執行任何xml文件轉換或在還原中運行PowerShell安裝/卸載腳本。