2016-12-02 32 views
0

我一直在試圖弄清楚爲什麼Visual Studio 2015中的自動包還原不起作用。根據我的理解,這裏沒有什麼可做的,但檢查了幾個設置。在構建時,它會查找丟失的包並自動下載它們。 我有一個解決方案,有15個單獨的項目。他們中的大多數將不會編譯,因爲「缺少包裹」。NuGet自動包還原Visual Studio 2015中的童話/神話般的野獸嗎?

我沒有任何在任何這些項目的遺留的NuGet(.nuget文件夾等),我有最新和最偉大的版本的NuGet的。

Visual Studio中根本不會下載丟失的文件。我刪除了解決方案包文件夾,並在創建時重新創建並下載了所有包,但每個單獨的項目仍顯示缺少的參考。 如果我去包管理器控制檯,並出具

Update-Package -reinstall 

然後包下載和一切正常。我只是想知道爲什麼它不會自動執行此操作。 它應該是正確的?

+0

它發生下一次,看看那裏的「缺少」的引用指向。打開.csproj文件並查看。我有一種感覺,那裏有一些不正確的東西。 – Kiliman

+0

我只能說這取決於很多因素。如果一旦它恢復正常,並且你關閉了VS,那麼它可以永久破壞恢復。簡單的解決方法是從Microsoft下載NuGet.exe,然後執行'nuget restore yoursolution.sln'來強制進行還原。 –

+0

您是否檢查了恢復的軟件包路徑和引用路徑以查看它們是否一致? –

回答

0

的NuGet恢復只有在包目錄中恢復文件,但是不恢復文件的項目中或修改您的項目。

例如,如果有一個包會添加一些引用的DLL或者增加一些內容文件到您的項目。從項目中刪除這些引用dll和內容文件後,在恢復此包時將不會添加它。這會導致你的項目在編譯時找不到缺失的pacakges。

所以我們需要用「更新-包-reinstall」命令來強制重新安裝包的引用和內容文件到項目中。

更新在團隊中共享項目的例子:

以下是我的解決方案的結構,CommDLL項目安裝一些的NuGet包和完整的解決方案是通過源控制管理。

enter image description here

我下載從源頭控制使用其他用戶帳戶,並安裝其他的NuGet包入CommDLL項目另一臺機器上該解決方案。然後使用新安裝的軟件包中的一些內容併成功構建項目。請確保包中的dll已添加到您的項目中,並且它已經在.csproj文件中設置了正確的HintPath。

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> 
    <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

接下來,我檢查這個修改的項目到源控制。請確保您被檢查的.csproj文件和packages.config文件。

enter image description here

現在,我得到另一臺機器上的最新版本,以獲得修改的內容。在從源代碼控制中檢出最新版本之後,軟件包引用會顯示警告,因爲該項目未編譯,這意味着軟件包不會被恢復。請重建這個項目,將[R 電子商店包爲您的項目(請確保您的Visual Studio 2015年已啓用「允許的NuGet下載缺失的軟件包」和「自動檢查構建在Visual Studio中失蹤的包「之前重建此項目)。

enter image description here

+0

我真的知道的是,在這個話題上似乎存在相互矛盾的建議。一切從「VS 2015更新3,你不必做任何事情」到「​​你必須修改你的解決方案並創建Nuget.Config文件」。看起來它運行良好,直到你有多個人將軟件包添加到解決方案中,然後所有的東西都分崩離析。它在VS中的實現方式使得它看起來像你可以使用NuGet包管理器,一切都將自行處理,但這是行不通的。我很想看到一個包含團隊和共享項目的示例實現。 – user2033791

+0

看起來好像packages目錄應該更像obj和bin目錄。他們不檢查源代碼管理,只是爲任何加載項目的人重新創建。 – user2033791

+0

這裏有一個意見:http://stackoverflow.com/questions/18376313/setting-up-a-common-nuget-packages-folder-for-all-solutions-when-some-projects-a – user2033791

相關問題