簡體   English   中英

TFS在線構建失敗 - NuGet包還原無法正常工作

[英]TFS Online Build Fails - NuGet package Restore Not working

我很樂意幫助解決這個問題。 代碼在本地框中編譯,但TFS構建失敗,因為項目說 -

Entity \\ DbModel.Context.cs(16):名稱空間'System.Data'中不存在類型或命名空間名稱'Entity'(您是否缺少程序集引用?)

Entity \\ DbModel.Context.cs(19):找不到類型或命名空間名稱'DbContext'(您是否缺少using指令或程序集引用?)

Entity \\ DbModel.Context.cs(26):找不到類型或命名空間名稱'DbModelBuilder'(您是否缺少using指令或程序集引用?)

我正在使用EntityFramework 6.1.1。 啟用項目和包恢復的NuGet包(在NuGet.targets文件中) -

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>

我認為EntityFramework的包下載在TFS中也失敗了,即使在TFS中構建啟動之前,同一個項目的其他NuGet包也已下載。

我正在為這個項目使用2個包 -

<packages>
<package id="EntityFramework" version="6.1.1" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.6" targetFramework="net45" />
</packages>

構建日志文件 -

RestorePackages:
  "C:\a\src\.nuget\NuGet.exe" install "C:\a\src\<project name>\packages.config" -source ""  -NonInteractive -RequireConsent -solutionDir "C:\a\src\ "
  Restoring NuGet packages...
  To prevent NuGet from downloading packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages'.
  Installing 'Newtonsoft.Json 6.0.6'.
  Successfully installed 'Newtonsoft.Json 6.0.6'.
  All packages listed in packages.config are already installed.

但是在Newtonsoft.Json之后,它甚至沒有下載EntityFramework Dlls。

最后我做到了。 花了一段時間。 此時,有兩種不同的選擇:

  1. 保留NuGet.targets文件並從所有項目中引用該NuGet.targets文件(對我來說不起作用)

  2. 在構建之前顯式調用NuGet.Exe包還原

選項1對我不起作用,這就是為什么繼續第二個選項,我必須這樣做:

  1. 從.nuget文件夾中刪除NuGet.targets文件(不要簽入該文件)

  2. 刪除並不簽入包文件

  3. 打開記事本中的所有項目文件並刪除NuGet.targets文件的引用,如http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore中所述

  4. 轉到VS 2013 - 工具>擴展和更新> VS庫 - 確保您擁有最新的NuGet

  5. 此時,您的項目已准備好在任何構建之前下載Nuget軟件包,以測試刪除packages文件夾並開始構建,它應該下載所有NuGet軟件包。

  6. 現在,對於TFS Continuous構建,不要直接將解決方案文件指向構建模板,而是使用http://blogs.msdn.com/b/dotnet/archive/2013/08中提到的自定義XML build.proj文件。 /27/nuget-package-restore-with-team-foundation-build.aspx

  7. 此XML首先調用NuGet.EXE還原路徑\\ .sln文件,如果未提及* .sln文件,則會在同一目錄中獲取任何其他解決方案文件

  8. 檢查根文件夾中的build.proj,NuGet.exe以及解決方案文件

現在,通過TFS在線CI,事情進展順利。 不要右鍵單擊Visual Studio解決方案以啟用NuGet包還原 - 它將撤消所有上述內容,因為它會帶回NuGet.targets文件並直接引用每個proj文件中的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM