【问题标题】:project.assets.json not found - TFS Build Server, no internet找不到 project.assets.json - TFS 构建服务器,没有互联网
【发布时间】:2018-02-01 06:20:48
【问题描述】:

我们刚刚从 VS2013&15/TFS2013 过渡到 VS2017/TFS2017(现场 TFS,而不是 VSTS),第一个测试解决方案是基于 dotNet Core 1.1 的解决方案(多项目 Web 服务)。

该解决方案在原始开发人员的机器上构建良好,我从 TFS 中得到了它,它在我的基础上也构建良好。与我们之前的方法保持一致,packages 文件夹的内容与项目一起签入,因为这使得 package 在 build box 上本地可用(没有互联网)。

但是,在构建服务器上构建解决方案是另一回事,因为我收到了多个表单错误...

..\obj\project.assets.json' not found. Run a NuGet package restore to generate this file.

当我运行 TFS 构建定义以及远程到盒子并直接通过盒子本身上的 VS 构建时,我都会遇到错误。

这整个 project.assets.json not found 问题似乎引起了头疼。就我而言,问题是我试图在我们的 TFS 2017 构建服务器上解决它,没有也永远不会访问互联网(因为它是一个服务器!)。

到目前为止,我看到的所有解决方案似乎都建议运行 Nuget Restore 命令,但由于服务器无法访问 nuget,因此无法运行。

这还没有什么花哨的,只是一个简单的 TFS 2017 Build 定义,其中包含 Get sources 和一个 Build solution 步骤。我无法理解如此简单的事情如何变得如此困难。

更改 Nuget 包还原选项没有任何区别。

由于 project.assets.json 文件是在 obj 文件夹中动态生成的,我什至无法将它们签入以重复使用。任何人都可以建议一个解决方法,目前测试项目已经死了。

编辑:使用 VS2015 创建的 4.6.1 Web 项目尝试相同的过程具有类似的未解析引用结果(例如 System.Web),但没有引发相同的错误,可能是由于是较旧的非核心项目。

【问题讨论】:

  • 构建代理上的 Nuget 版本的详细版本是什么?您是否尝试恢复本地 Nuget 提要?
  • 服务器上的 nuget 是 3.3.0 - 由 VS2017 作为其安装过程的一部分安装,盒子是一个全新的 VM。不尝试使用本地提要,尝试过但似乎没有任何区别。天哪,这太难了。
  • 对此感到抱歉,感谢分享信息,没有互联网的环境和作为构建代理实际上并不常见,您可能需要多加注意才能使其正常工作。
  • 鉴于我在过去两周阅读的关于 VS2017 缺乏合适的离线安装程序的帖子数量,我请求对环境有所不同。我自己的经验是,我曾经处理过的所有构建服务器都像保管库一样被锁定,专门用于确保完全受控的构建环境。由于安装问题,也许所有其他人还没有解决构建服务器问题(!) - 我们有一张企业票向 MS 开放了将近两周,只是为了处理 VS2017 的安装。不好。

标签: continuous-integration visual-studio-2017


【解决方案1】:

根据 ,当我运行 TFS 构建定义以及远程到盒子并直接通过盒子本身上的 VS 构建时,我都会遇到错误。

该问题似乎与 TFS 构建端无关,因为它也不适用于通过构建代理机器中的 VS 进行的本地构建。

因为这是一个 dotnet 项目。因此,您可以尝试使用“dotnet restore”而不是“nuget restore”。尝试使用 dotnet core 模板(使用 dotnet restore)。

如果您使用经过身份验证的 nuget 提要,则可以使用 nuget restore 但您还需要使用 nuget 安装程序任务。请参阅https://github.com/Microsoft/vsts-tasks/issues/3762 进行讨论。 Nuget 版本应高于 4.0。

没有 dotnet restore 和 Nuget restore 并且只使用 get source/Visual Studio Build 将无法构建 dotnet core 项目。如果您的服务器无法访问互联网,作为一种解决方法,您应该使用Local feeds

【讨论】:

  • 谢谢,我会在星期一阅读并尝试一下。非常感谢,我会告诉你我的进展情况。
  • 非常感谢您提供的信息,“dotnet restore”终于使项目能够在没有互联网的情况下在构建服务器上构建,我将模板转换过来,应该可以最终把它放到休息。再次感谢。
  • 于是我把模板切换到了“ASP.NET Core (.NET Framework)”模板,继续报错所以打算尝试切换到本地提要,实在不行看到任何其他方式解决这个问题。这是一个真正的痛苦,因为这意味着我们最终不得不在本地复制一部分 nuget 并对其进行维护,这似乎是对集中包存储库的整个想法的嘲弄。
猜你喜欢
  • 2019-01-11
  • 1970-01-01
  • 2014-10-11
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多