gpt4 book ai didi

TFS 联机构建失败 - NuGet 包还原不工作

转载 作者:行者123 更新时间:2023-12-01 23:50:17 25 4
gpt4 key购买 nike

我很乐意得到你的帮助来解决这个问题。代码在本地框中编译,但 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 中也失败,即使同一项目的其他 NuGet 包在 TFS 中开始构建之前下载。

我正在为这个项目使用 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 Dll。

最佳答案

终于成功了。花了一段时间。此时,有 2 个不同的选项可用:

  1. 保留 NuGet.targets 文件并从所有项目中引用该 NuGet.targets 文件(对我不起作用)

  2. 在构建之前显式调用 NuGet.Exe 包还原

选项 1 对我不起作用,这就是为什么继续使用第二个选项的原因,我必须这样做:

  1. 从 .nuget 文件夹中删除 NuGet.targets 文件(不要 checkin 该文件)

  2. 删除并且不 checkin 包文件

  3. 在记事本中打开所有项目文件并删除 NuGet.targets 文件的引用,如 http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore 中所述

  4. 转到 VS 2013 – 工具 > 扩展和更新 > VS 库 – 确保您拥有最新的 NuGet

  5. 此时,您的项目已准备好在任何构建之前下载 Nuget 包,为了测试删除包文件夹并开始构建,它应该下载所有 NuGet 包。

  6. 现在,对于 TFS 连续构建,不是直接在构建模板中指向解决方案文件,而是使用 http://blogs.msdn.com/b/dotnet/archive/2013/08/27/nuget-package-restore-with-team-foundation-build.aspx 中提到的自定义 XML build.proj 文件。 .

  7. 此 XML 首先调用 NuGet.EXE 恢复路径\.sln 文件,如果未提及 *.sln 文件,它会选择同一目录中的任何其他解决方案文件

  8. checkin 根文件夹中的 build.proj、NuGet.exe 以及解决方案文件

现在,TFS 在线 CI 对我来说一切都很顺利。不要右键单击 Visual Studio 解决方案以启用 NuGet 包还原 - 它会撤消上述所有操作,因为它会返回 NuGet.targets 文件并直接引用每个项目文件中的文件。

关于TFS 联机构建失败 - NuGet 包还原不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26922389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com