遷移MSBuild-Integrated Package Restore專案至Automatic Packages Restore
在前面VSO簽出packages少了dll怎麼辦?因為是採用NuGet Packages簽入VSTS版控(VSO改名為VSTS)碰到一些問題,還好平常都是看黑大的文章長大的,沒有花費許多時間就順利把問題排除。不過,最近在整理一個舊專案時,在不同電腦簽出之後實在很容易碰到NuGet套件的問題,有了第一次成功的經驗當然信心滿滿,立馬進行舊專案升級使用Automatic Packages Restore。結果就是上圖…
刪除NuGet組態
按照前文,我們進行了.nuget目錄的刪除,這樣會把下面三個MSBuild-Integrated Package Restore所使用的組態與.exe給刪除:
- NuGet.Config
- NuGet.exe
- NuGet.targets
並把專案目錄下的packages目錄刪除。重新簽入(簽入後建議把本機版本刪除)與簽出(確認最新無.nuget與packages目錄版本)。其實到這裡都沒有錯,重新建置能看到 NuGet 有進行套件還原的動作,packages目錄也順利出現在專案目錄之下,建置就會如上圖一樣,一堆黃色三角型,一堆找不到參考元件的錯誤。
如果有碰到上述問題(我這個專案是有段時間的舊專案),請在進行以下動作。
請開啟方案中的專案檔(*.csproj / *.vbproj)並移除下列所有XML標籤:
<RestorePackages>true</RestorePackages> ... <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> ... <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>此專案參照此電腦中缺少的 NuGet 套件。啟用「NuGet 套件還原」以便下載。如需詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的檔案為 {0}。</ErrorText> </PropertyGroup> <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> </Target>
除了第一行那個項目,其他可以用nuget.targets為關鍵字搜尋,移除任何nuget.targets參考設定。重新開啟專案並建置,就能看到參考都已是正常狀態。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。