的NuGet恢復只有在包目錄中恢復文件,但是不恢復文件的項目中或修改您的項目。
例如,如果有一個包會添加一些引用的DLL或者增加一些內容文件到您的項目。從項目中刪除這些引用dll和內容文件後,在恢復此包時將不會添加它。這會導致你的項目在編譯時找不到缺失的pacakges。
所以我們需要用「更新-包-reinstall」命令來強制重新安裝包的引用和內容文件到項目中。
更新在團隊中共享項目的例子:
以下是我的解決方案的結構,CommDLL項目安裝一些的NuGet包和完整的解決方案是通過源控制管理。
我下載從源頭控制使用其他用戶帳戶,並安裝其他的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文件。
現在,我得到另一臺機器上的最新版本,以獲得修改的內容。在從源代碼控制中檢出最新版本之後,軟件包引用會顯示警告,因爲該項目未編譯,這意味着軟件包不會被恢復。請重建這個項目,將[R 電子商店包爲您的項目(請確保您的Visual Studio 2015年已啓用「允許的NuGet下載缺失的軟件包」和「自動檢查構建在Visual Studio中失蹤的包「之前重建此項目)。
它發生下一次,看看那裏的「缺少」的引用指向。打開.csproj文件並查看 。我有一種感覺,那裏有一些不正確的東西。 –
Kiliman
我只能說這取決於很多因素。如果一旦它恢復正常,並且你關閉了VS,那麼它可以永久破壞恢復。簡單的解決方法是從Microsoft下載NuGet.exe,然後執行'nuget restore yoursolution.sln'來強制進行還原。 –
您是否檢查了恢復的軟件包路徑和引用路徑以查看它們是否一致? –