繁体   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